C# 若数据绑定列Visibility为False,则我无法读取单元格值
我有一个gridview元素,用于列出成员对我的问卷的答案。所有答案作为字符串存储在一列中。每4位数字是相应问题的答案。对于包含4个问题的问卷,答案可以是C# 若数据绑定列Visibility为False,则我无法读取单元格值,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个gridview元素,用于列出成员对我的问卷的答案。所有答案作为字符串存储在一列中。每4位数字是相应问题的答案。对于包含4个问题的问卷,答案可以是0001000600030040001 <asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" DataKeyNames="id, memberid, qid, qdate,
0001000600030040001
<asp:GridView ID="gv"
runat="server"
AutoGenerateColumns="False"
DataKeyNames="id, memberid, qid, qdate, member, membermail, qtitle, answer"
OnSelectedIndexChanging="gv_SelectedIndexChanged" >
<Columns>
<asp:BoundField DataField="id" />
<asp:BoundField DataField="memberid" HeaderText="Member ID" />
<asp:BoundField DataField="qid" HeaderText="Questionnaire ID" />
<asp:BoundField DataField="qdate" HeaderText="Date" />
<asp:BoundField DataField="member" HeaderText="Member Name" />
<asp:BoundField DataField="membermail" HeaderText="Member E-mail" />
<asp:BoundField DataField="qtitle" HeaderText="Questionnaire" />
<asp:BoundField DataField="answer" />
<asp:CommandField SelectText="Analyze" ShowSelectButton="True" ButtonType="Link" HeaderText="Analysis" />
</Columns>
</asp:GridView>
protected void gv_SelectedIndexChanged(object sender, GridViewSelectEventArgs e)
{
string id = gv.Rows[e.NewSelectedIndex].Cells[0].Text;
string memberid = gv.Rows[e.NewSelectedIndex].Cells[1].Text;
string qid = gv.Rows[e.NewSelectedIndex].Cells[2].Text;
string qdate = gv.Rows[e.NewSelectedIndex].Cells[3].Text;
string memberName = gv.Rows[e.NewSelectedIndex].Cells[4].Text;
string memberMail = gv.Rows[e.NewSelectedIndex].Cells[5].Text;
string qtitle = gv.Rows[e.NewSelectedIndex].Cells[6].Text;
string answer = gv.Rows[e.NewSelectedIndex].Cells[7].Text;
//...
}
另一方面,如果
Visible=“true”
一切正常。但我不想在gridview中列出答案。您可以使用模板字段,如下所示
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField runat="server" ID="hiddenFieldAnswer" Value='<%# Bind("answer") %>' />
</ItemTemplate>
</asp:TemplateField>
您可以使用模板字段,如下所示
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField runat="server" ID="hiddenFieldAnswer" Value='<%# Bind("answer") %>' />
</ItemTemplate>
</asp:TemplateField>
由于您已经将
answer
的值作为DataKeyNames
的一部分,因此在DataKeyNames
中存储多个值时,您可以通过以下方式获得相应的值
protected void gv_SelectedIndexChanged(object sender, GridViewSelectEventArgs e)
{
....
string answer= gv.DataKeys[e.NewSelectedIndex].Values["answer"].ToString();
...
}
由于您已经将
answer
的值作为DataKeyNames
的一部分,因此在DataKeyNames
中存储多个值时,您可以通过以下方式获得相应的值
protected void gv_SelectedIndexChanged(object sender, GridViewSelectEventArgs e)
{
....
string answer= gv.DataKeys[e.NewSelectedIndex].Values["answer"].ToString();
...
}
不能使用DataKeys或DataKeyName来解决吗?我认为DataKeyNames属性用于解决这类问题。您仍然可以使用DataKeyNames来获取值(请参阅我的答案)。我也同意@Kiran Hegde的答案,它会起作用的。难道不能用数据键或数据键名来解决吗?我认为DataKeyNames属性用于解决这类问题。您仍然可以使用DataKeyNames来获取值(请参阅我的答案)。我也同意@Kiran Hegde的答案,它会起作用的。
protected void gv_SelectedIndexChanged(object sender, GridViewSelectEventArgs e)
{
....
string answer= gv.DataKeys[e.NewSelectedIndex].Values["answer"].ToString();
...
}