2011-03-07 7 views
3

C# CodeBehind에서 GridView을 100 % 생성해야합니다. 나는 그것을 행을 선택하고이 코드를 사용하여 다시 게시 한 :CodeBehind의 GridView에서 행 및 포스트 백 선택

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를 얻는 방법을 게시 하는가?

답변

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 
     } 

    } 
0

당신은 __doPostBack에 두 번째 paramater에 인수를 전달할 수 있습니다

__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')"); 

는 그런 다음 이벤트 인수를 통해 액세스 할 수 있습니다.

+0

내 값으로 "Hello"를 입력하고 행을 클릭 한 후 Page_Load에서 EventArgs e를 보았지만 비어 있습니다. – user390480