来自Code Behind的GridView选择行和回发

时间:2011-03-07 21:23:09

标签: c# asp.net gridview postback

我必须在C#CodeBehind中创建一个GridView 100%。我让它选择一行并使用以下代码回发:

    void dataGrid_ItemCreated(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem ||
            e.Item.ItemType == ListItemType.Item)
        {
            e.Item.Attributes.Add("onmouseover",
                   "this.style.backgroundColor='beige';this.style.cursor='pointer'");
            e.Item.Attributes.Add("onmouseout",
                   "this.style.backgroundColor='#FFFFFF';");
            e.Item.Attributes.Add("onclick", "javascript:__doPostBack" +
                   "('_ctl0$DataGrid1$_ctl" +
                   ((Convert.ToInt32(e.Item.ItemIndex.ToString())) + 2) +
                   "$_ctl0','')");
        }
    }

这会回发但是如何获取用户点击的行的ID?

2 个答案:

答案 0 :(得分:1)

void dataGrid_ItemCreated(object sender, DataGridItemEventArgs e)
    {
        if(e.Item.ItemType == ListItemType.Item)
        {
            var item = e.Item.DataItem;  // <- entity object that's bound, like person
            var itemIndex = e.Item.ItemIndex; // <- index
        }

    }

答案 1 :(得分:0)

您可以将第二个参数中的参数传递给__doPostBack

__doPostBack(controlname, yourid);

请填写此处:

e.Item.Attributes.Add("onclick", "javascript:__doPostBack" +
    "('_ctl0$DataGrid1$_ctl" +
   ((Convert.ToInt32(e.Item.ItemIndex.ToString())) + 2) + 
   "$_ctl0','PUT YOUR VALUE HERE')");

然后您可以通过事件参数访问它。