页面前台有以下代码:
<asp:GridView ID= "View1 " Width= "100% " runat= "server " AutoGenerateColumns= "False " CellPadding= "3 " OnRowDataBound= "VoteView_RowDataBound " CssClass= "GbText " DataKeyNames= "SubjectID,Mode " CellSpacing= "1 ">
后台有以下代码:
protected void View1_RowDataBound(object sender,GridViewRowEventArgs e)
{
if(View1.DataKeys[e.Row.RowIndex].Values[ "Mode "].ToString().ToLower() == "false ")
{
......
}
}
数据表中的确有 'SubjectID '和 'Mode '字段。我的问题是:
1. 前台代码中GridView的DataKeyNames这里只能填入主键字段名吗?可是实际上数据表中只有 'SubjectID '字段为主键呐。如此说来只有主键才能填入DataKeyNames属性中,是这样吗?
2. 后台代码中的e.Row.RowIndex指的是什么?那View1.DataKeys[e.Row.RowIndex].Values[ "Mode "]又是什么意思呢?
谢谢指教!
------解决方案--------------------------------------------------------
1.datakeynames是gridview的主键
2.e.row.rowindex是当前行的索引
------解决方案--------------------------------------------------------
比如你点第一行,那e.row.rowindex=0
View1.DataKeys[e.Row.RowIndex].Values[ "Mode "]就是此行“mode”字段的值