C# 如何在gridview中使用C编程为DataKeyName赋值#
我有一个网格视图。我通过GridViewC# 如何在gridview中使用C编程为DataKeyName赋值#,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个网格视图。我通过GridViewgvExemptSub中的c#在其中添加列,并在单击按钮时从另一个GridViewgvsub检索数据。我想将数据行值分配给我正在从另一个GridView检索的DataKeyName,但我不知道如何分配 <asp:GridView ID="gvExemptSub" runat="server" Width="100%" DataKeyNames="LID,BID"> <Columns>
gvExemptSub
中的c#在其中添加列,并在单击按钮时从另一个GridViewgvsub
检索数据。我想将数据行值分配给我正在从另一个GridView检索的DataKeyName,但我不知道如何分配
<asp:GridView ID="gvExemptSub" runat="server" Width="100%" DataKeyNames="LID,BID">
<Columns>
</Columns>
</asp:GridView>
protected void BtnAddSubj_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.TableName = "ExemptSubj";
dt.Columns.Add("QUALIFICATION", typeof(string));
dt.Columns.Add("SUBJECT", typeof(string));
dt.Columns.Add("LEVEL", typeof(string));
dt.Columns.Add("UNIVERSITY", typeof(string));
DataRow dr;
foreach (GridViewRow srow in gvSubj.Rows)
{
if (srow.RowType == DataControlRowType.DataRow)
{
dr = dt.NewRow();
dr[0] = ddlQualification.SelectedItem;
string SUBJECT = srow.Cells[1].Text;
SUBJECT = SUBJECT.Replace("amp;", "");
dr[1] = SUBJECT;
dr[4] = int.Parse(gvSubj.DataKeys[srow.RowIndex]["LEVEL_ID"].ToString());
dr[2] = srow.Cells[2].Text;
dr[3] = ddlUNI.SelectedItem.Text;
dr[5] = ddlUNI.SelectedValue;
dt.Rows.Add(dr);
}
}
ViewState["ExemptSubj"] = dt;
//gvExemptSubj.DataKeyNames = (dr[4], dr[5])
gvExemptSubj.DataSource = dt;
gvExemptSubj.DataBind();
}
受保护的无效BtnAddSubj_单击(对象发送方,事件参数e)
{
DataTable dt=新的DataTable();
dt.TableName=“exemptsubc”;
添加(“限定”,类型(字符串));
添加(“主题”,类型(字符串));
添加(“级别”,类型(字符串));
添加(“大学”,类型(字符串));
数据行dr;
foreach(gvsub.Rows中的GridViewRow srow)
{
if(srow.RowType==DataControlRowType.DataRow)
{
dr=dt.NewRow();
dr[0]=ddlQualification.SelectedItem;
字符串SUBJECT=srow.Cells[1]。文本;
主题=主题。替换(“amp;”,“”);
dr[1]=受试者;
dr[4]=int.Parse(gvsub.DataKeys[srow.RowIndex][“LEVEL_ID”].ToString());
dr[2]=srow.Cells[2]。文本;
dr[3]=ddlUNI.SelectedItem.Text;
dr[5]=ddlUNI.SelectedValue;
dt.Rows.Add(dr);
}
}
ViewState[“exemptsubc”]=dt;
//gvExcemptSubc.DataKeyNames=(dr[4],dr[5])
gvExcemptSubc.DataSource=dt;
gvExcemptSubc.DataBind();
}
您可以使用字符串数组以编程方式绑定它们:
GridView1.DataKeyNames = new string[2] { "ColumnA", "ColumnB" };
如何将ddlUNI.SelectedValue作为Datarow分配给不是列的DatakeyNames“BID”…您不能。密钥必须存在于数据集中。如果您添加一个datakey列,它可能会工作:
dt.Columns.add(“datakey”,typeof(int))代码>那么如何隐藏该数据键列?因为我不想让BID、LID在gridview中可见……如果您不想在使用自动生成的列时使列可见,则需要将它们隐藏在onrowdatabound或onrowcreated事件中。或者停止使用数据键。