我有一個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