日期:2014-05-19  浏览次数:20444 次

请高手指点ASP.NET的GridView问题!
我GridView上有多个列.第一列是ID,其他列都是一些数据,我ID设定为表的主健,为了使他唯一,好做删除,因为我很有可能数据每个字段都是一样的.但是我把表数据显示在GridView上的时候把字段ID隐藏掉了Visible= "False ",之后我选择行的时候.是这样选择的GridItem.SelectedRow.Cells[1].Text;但是查不到隐藏的字段,只能让他不隐藏才能查到值,但是我不想他让显示出来,非得隐藏掉。请高手指点隐藏掉后然后抽出GridView第一列上的值,注意啊,第一列要隐藏掉!

------解决方案--------------------


在绑定前设置该列的visable = true
绑定后再设为 false
即可

------解决方案--------------------
或者
设置一个样式表就行 在css里写 .hidden { display:none;} 在源码里引用css样式表 然后在设计里这样就可以了 GridView1.Columns[index].ItemStyle.CssClass = "hidden ";

------解决方案--------------------
1.表的主键ID做为gridview的主键,如果要隐藏这个列,只要在Columns中不定义就行了
<asp:GridView ID= "Gridview1 " AutoGenerateColumns= "False " runat= "server " DataKeyNames= "Id " >
<Columns>
<asp:BoundField DataField= "Name " HeaderText= "姓名 " />
<asp:BoundField DataField= "LoginId " HeaderText= "帐号 " />
//在此定义你想要显示的列,要隐藏的列不定义
</Columns>
</asp:GridView>

2.通过DataKeyNames来获取主键的代码:
string ID= Gridview1.DataKeys[行号][0] as string;
if(ID!=null)
{
//对获取的ID进行操作
}


接分

------解决方案--------------------
其实lz,你根本不用如此操作
首先,在Gridview中设定一个DataKeyNames的属性,这个属性就是你主键的字段名
其次,在select中,必须选择出你的主键
再次,在你的select事件中,利用下面语句获得你的id号
Gridview1.DataKeys[rows.Rowindex].Value

其中rows是GridViewRow类型的

------解决方案--------------------
Gridview1.DataKeys[“这个问题放什么啊?”].Value
我是选择的行.又不是固定死了的行。

※※※※※※※※※※※※※※※※
固不固定是看你怎么写了,
如果你现在在Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)事件中获取主键,那么:Gridview1.DataKeys[e.Row.RowIndex][0]。
如果你在Gridview1_RowCommand事件中获取主键,那么:Gridview1.DataKeys[Convert.ToInt32(e.CommandArgument)][0]
------解决方案--------------------
在上面的这位兄弟的基础上我补充一下:

1.表的主键ID做为gridview的主键,如果要隐藏这个列,只要在Columns中不定义就行了
<asp:GridView ID= "Gridview1 " AutoGenerateColumns= "False " runat= "server " DataKeyNames= "Id " >
<Columns>
<asp:BoundField DataField= "Name " HeaderText= "姓名 " />
<asp:BoundField DataField= "LoginId " HeaderText= "帐号 " />
//在此定义你想要显示的列,要隐藏的列不定义
</Columns>
</asp:GridView>

2.通过DataKeyNames来获取主键的代码:
string ID= Gridview1.DataKeys[行号][0] as string;
if(ID!=null)
{
//对获取的ID进行操作
}


DataKeyNames= "Id " 这个是必须的,在列里面可以不用绑定ID,这样这一列就不显示了

删除或者修改的时候ID的值可以这样得到:
string ID= Gridview1.DataKeys[e.row.RowIndex].ToString();