首页 新闻 会员 周边 捐助

Asp.net C#|| GridView绑定数据后,怎么获取当前选中行的对象。需要使用这个选中对象的某些值。

0
悬赏园豆:30 [已解决问题] 解决于 2012-05-18 08:26

   以前用过GridView的修改、删除模板列,那样在 GridView的RowUpdating、RowEditing、Delete等事件中,通过 e ,可以得到该列的值。请问我只想在选择了某一列,就获取该列绑定的对象或该对象的一两个属性值,该如何实现呢? 谢谢回答。

icyme的主页 icyme | 初学一级 | 园豆:77
提问于:2012-05-10 11:55
< >
分享
最佳答案
0

 

 

 

首先绑定DataKeyNames GridView.DataKeyNames = new string[] { "字段名称" }; 
然后才能取得行主键值
 
收获园豆:12
土豆屋 | 菜鸟二级 |园豆:354 | 2012-05-17 21:12
其他回答(2)
0
首先绑定DataKeyNames 
GridView.DataKeyNames = new string[] { "字段名称" }; 
取值 
string aaa= GridView.DataKeys[e.Row.RowIndex].Value.ToString();

1、在绑定时设置主键: 
//设置主键; 
        GridView1.DataKeyNames = new string[] { "id" }; 
        GridView1.DataBind(); 
2、获取键值: 
 GridView1.DataKeys[e.RowIndex].Value.ToString();

按钮事件里添加 
string str_dk= GridView1.DataKeys[e.Row.RowIndex].Value.ToString();

如果GridView控件的DataKeyNames属性设置了表的两个字段(SubjectID,Mode),那么在为GridView绑定数据时对库表的每个记录的指定字段值要作出判断。后台代码中的e.Row.RowIndex即表示GridView的当前行(对应于库表的当前记录);而 View1.DataKeys[e.Row.RowIndex].Values["Mode"].ToString()则获取当前行指定字段(Mode) 的值。若前台代码只写:DataKeyNames="SubjectID'(即DataKeyNames属性只填入一个字段名),则后台只需写成: View1.DataKeys[e.Row.RowIndex].Value.ToString()) 即可。 
  同样的,要动态获取当前行另一个字段的值可以这样写: View.DataKeys[e.Row.RowIndex].Values["SubjectID"].ToString())。

http://topic.csdn.net/u/20071018/22/d63a0632-bfdf-44d2-89f4-7a39b3f4c97f.html
收获园豆:10
悟行 | 园豆:12559 (专家六级) | 2012-05-10 12:43

  朋友以上说的代码应该要写在GridView的什么事件里吧?因为 e.Row.RowIndex 。

这个问题先不纠结了,因为你说的不是我期望的那种效果。朋友能否知道  在GridView中

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>

       /*此处省略绑定的模板列*/

       <asp:HyperLinkField Text="查看"  DataNavigateUrlFormatString="Demo.aspx?HSubjectID={0}&HPID={1}&HSName={2}" DataNavigateUrlFields="HallSubjectID,HPostId,HSubName">

        </asp:HyperLinkField>

</Columns>
</asp:GridView>

<asp:HyperLinkField  现在传递值是通过Demo.aspx?HSubjectID={0}&HPID={1}&HSName={2}" 这种方式来传递的,有没有其他好的传值方法呢?因为这个方法,如果值长度很大就会有问题。

支持(0) 反对(0) icyme | 园豆:77 (初学一级) | 2012-05-10 12:54

@Technology: 

 <asp:HyperLinkField Text="查看"  DataNavigateUrlFormatString="Demo.aspx?HSubjectID={0}&HPID={1}&HSName={2}" DataNavigateUrlFields="HallSubjectID,HPostId,HSubName">

        </asp:HyperLinkField>这个点击事件就可以了。

grvStoreHouse.DataKeyNames = new string[] { "F_GUID", "F_StoreHouseName", "F_Phone", "F_PersonGUID", "用户姓名" };
grvStoreHouse.DataSource = lst;
grvStoreHouse.DataBind();

protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
ViewState["Operate"] = "Updates";

DdlPerson();
int index = ((GridViewRow)((ImageButton)sender).NamingContainer).DataItemIndex;
DataKey key = this.grvStoreHouse.DataKeys[index];

ViewState["guid"] = key["F_GUID"].ToString();
txtStoreHouseName.Text = key["F_StoreHouseName"].ToString();
txtPhone.Text = key["F_Phone"].ToString();

}
支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2012-05-10 12:56
0

換成 button,在事件中傳遞數據。可以用viewstate ,session等。

收获园豆:8
無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-10 13:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册