2016-06-30 4 views
0

У меня есть таблица GridView, источником данных которой является база данных. Первый столбец GridView - это флажок, пользователь поля может выбирать флажки. Я не уверен, где я ошибся, мой код не может установить флажок, который я сделал.asp.net fail get value from gridview checkbox

<div id="UserFrom" class="form-horizontal" runat="server"> 
    <h4>Add Training</h4> 
    <hr /> 
    <div class="alert alert-info" style="display: none;"> 
     <button data-dismiss="alert" class="close" type="button">×</button> 
    </div> 
    <div class="form-group"> 
     <label for="inputCode" class="col-sm-2 control-label">Training Code</label> 
     <div class="col-sm-3"> 
      <asp:DropDownList ID="ddlRole" runat="server" CssClass="form-control" ValidationGroup="G1" required></asp:DropDownList> 
     </div> 
    </div> 
    <div class="col-md-6"> 
     <asp:GridView ID="GrdRole" runat="server" CssClass="table table-striped table-bordered table-hover" EmptyDataText="No Records Found" DataKeyNames="RoleID" 
      AllowPaging="true" AutoGenerateColumns="false" AutoGenerateDeleteButton="false" RowStyle-HorizontalAlign="Left" OnPageIndexChanging="GrdRole_PageIndexChanging" 
      HeaderStyle-HorizontalAlign="Center" GridLines="None" PageSize="10" RowStyle-CssClass="gradeX" AlternatingRowStyle-CssClass="gradeA"> 
     <columns> 
      <asp:TemplateField> 
      <ItemTemplate> 
       <asp:CheckBox ID="chkCtrl" runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="Name" HeaderText="Name" /> 
     <asp:BoundField DataField="EmployeeNo" HeaderText="EmployeeNo" /> 
     </columns> 
      <PagerStyle HorizontalAlign="Right" CssClass="pagination-ys" /> 
     </asp:GridView> 
    </div> 
    <div class="form-group"> 
     <div class="col-sm-offset-3 col-sm-9"> 
      <td> 
       <asp:Button ID="submit_button" Text="Check" CssClass="btn btn-success" runat="server" OnClick="checkOuput" /> 
      </td> 
     </div> 
    </div> 
</div>e 

мой C#

protected void checkOuput(object sender, EventArgs e) 
{ 
    string data = ""; 
    foreach (GridViewRow row in GrdRole.Rows) 
    { 
     if (row.RowType == DataControlRowType.DataRow) 
     { 
      CheckBox chkRow = (row.Cells[0].FindControl("chkCtrl") as CheckBox); 
      if (chkRow.Checked) 
      { 
       string EmployeeNo = row.Cells[2].Text; 
       data = data + EmployeeNo + " , " ; 
      } 
     } 
    } 
    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + data + "');", true); 
} 

Я не уверен, где я сделал неправильно, когда я нажимаю на кнопкупроверки всплывающее окно empty.please руководство мне спасибо.

ответ

0

Убедитесь, что вы только один раз связывание GridView в page_load с использованием !IsPostBack

if (!IsPostBack) 
{ 
BindGridView(); 
} 

Также проверьте, если страница имеет ViewStateMode="Disabled" чем включить его с помощью ViewStateMode="Enabled"

+0

спасибо дружище мой вопрос решен! – KyLim