2012-07-03 6 views
0

CheckBox가 포함 된 gridview가 있습니다.GridView에서 RowCreated의 CheckBox 속성 변경

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCreated="GridView1_RowCreated" 
    BackColor="#F1EFC5" CssClass="SearchEveryWhere_Table" Width="500px"> 
    <HeaderStyle BackColor="#5391DD" ForeColor="White" /> 
    <Columns> 
     <asp:BoundField DataField="CityCode" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" Visible="false"> 
      <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" CssClass="EntryCell hideElement" /> 
     </asp:BoundField> 
     <asp:BoundField DataField="Switch" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" Visible="false"> 
     <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" CssClass="EntryCell hideElement" /> 
     </asp:BoundField> 
     <asp:BoundField DataField="Page_Number" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" HeaderText="Page"> 
      <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" CssClass="EntryCell" /> 
     </asp:BoundField> 
     <asp:BoundField DataField="Name" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" HeaderText="Title"> 
      <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" CssClass="EntryCell" /> 
     </asp:BoundField> 
     <asp:TemplateField HeaderText="Access"> 
      <ItemTemplate> 
       <asp:CheckBox runat="server" AutoPostBack="true" OnCheckedChanged="chkStatus_OnCheckedChanged" Checked='<%# Convert.ToBoolean(Eval("Access")) %>' ID="chkStatus" ClientIDMode="Static" /> 
      </ItemTemplate> 
      <HeaderStyle HorizontalAlign="Center" /> 
      <ItemStyle HorizontalAlign="Center" /> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

나는 값이 확인란의 변화 ID를 원하는 등이 :

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    try 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      sp_GetPageAccess08_New_Result CurrentREcord = (sp_GetPageAccess08_New_Result)e.Row.DataItem; 
      e.Row.Cells[4].FindControl("chkStatus").ID = "chkStatus_" + CurrentREcord.CityCode + "_" + CurrentREcord.Page_Number + "_" + CurrentREcord.Switch.ToString(); 
      if (CurrentREcord.Access == false) 
      { 
       e.Row.BackColor = System.Drawing.Color.FromArgb(252, 212, 243); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 

    } 
} 

나는 내가 chkStatuschkStatus_OnCheckedChanged 얻을 ID을 얻고 싶은 경우에 문제가 :

rotected void chkStatus_OnCheckedChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     CheckBox chk = sender as CheckBox; 
     string ID = chk.ID; 

어떻게 IDchkStatus으로 변경할 수 있습니까? chkStatus_OnCheckedChanged에 들어갈 수있는 속성에 문자열을 저장할 수 없다면 어떻게 될까요?

감사

내 코드의
+0

ID 속성을 사용하지 않아도됩니다 (다시 게시 할 때 다시 작성해야 함) 대신 확인란 속성을 사용합니다. attibutes 사용에 대한이 링크를 확인하십시오. http://www.codeproject.com/Tips/88324/Passing-command-arguments-to-a-checkbox – Nico

답변

1

보정에

당신의 OnRowDatabound 데이터를 얻기 위해 이것을 사용하여 체크 박스에 체크/선택 해제 이벤트에

((CheckBox)e.Row.Cells[4].FindControl("chkStatus")).Attributes.Add("MyData", string.Format("{0}_{1}_{2}", CurrentREcord.CityCode, CurrentREcord.Page_Number, CurrentREcord.Switch.ToString()); 

를 추가

string data = chkStatus.Attributes["myData"]; 
+0

그리고'chkStatus_OnCheckedChanged1'에서'HiddenField' 값을 어떻게 얻을 수 있습니까? 덕분에 – Arian

+0

그 일을해야합니다 – JohnnBlade

0

당신이 할 수있는 checkBox.Attributes.Add 메소드를 사용하여 사용자 정의 속성에 값을 저장하고 yo 또한 CheckBox 근처에 HiddenField 컨트롤을 삽입하고 Value 속성에 원하는 값을 저장할 수 있습니다 (더 좋음).