我有一个gridview元素来列出成员对我的调查问卷的答案。所有答案都以字符串的形式存储在一列中。每4位数字就是相应问题的答案。对于由4个问题组成的问卷,答案可能是00010006000300040001
。如果DataBound列Visibilty为False我无法读取单元格值
<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;
//...
}
如果我把所选行的答案单元格的值时
<asp:BoundField DataField="answer" Visible="false" />
我不能得到答案,
answer.Length //returns 0;
在另一方面,如果Visible="true"
一切都很好。但我不想在gridview中列出答案。
无法使用DataKeys或DataKeyNames解决它吗?我在想DataKeyNames属性是针对这种问题的。 – zkanoca 2014-09-29 14:37:24
您仍然可以使用DataKeyNames来获取值(请参阅我的答案)。我同意@Kiran Hegde的回答,它会起作用。 – 2014-09-29 18:11:43