Только один флажок должен быть выбран в любое время в gridview - PullRequest
0 голосов
/ 28 июня 2018

Я добавил флажок в моем виде сетки. как мне сделать так, чтобы в любой момент можно было установить только 1 флажок.

                    <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" Font-Size="Small" Width="100%">
                        <Columns>


                            <asp:BoundField DataField="Supplier" HeaderText="Supplier" SortExpression="Supplier" />
                            <asp:BoundField DataField="Term" HeaderText="Term" SortExpression="Term" />
                            <asp:BoundField DataField="Tariff" HeaderText="Tariff" SortExpression="Tariff" />
                            <asp:BoundField DataField="SC" HeaderText="SC" SortExpression="SC" />
                            <asp:BoundField DataField="Charge" HeaderText="Charge" SortExpression="Charge" />
                            <asp:BoundField DataField="Unit_Rate" HeaderText="Unit_Rate" SortExpression="Unit_Rate" />
                            <asp:BoundField DataField="Day_Rate" HeaderText="Day_Rate" SortExpression="Day_Rate" />
                            <asp:BoundField DataField="Night_Rate" HeaderText="Night_Rate" SortExpression="Night_Rate" />
                            <asp:BoundField DataField="Weekday_Rate" HeaderText="Weekday_Rate" SortExpression="Weekday_Rate" />
                            <asp:BoundField DataField="Eve_Wkend_Rate" HeaderText="Eve_Wkend_Rate" SortExpression="Eve_Wkend_Rate" />
                            <asp:BoundField DataField="Eve_Wkend_Night_Rate" HeaderText="Eve_Wkend_Night_Rate" SortExpression="Eve_Wkend_Night_Rate" />
                            <asp:BoundField DataField="Winter_Rate" HeaderText="Winter_Rate" SortExpression="Winter_Rate" />
                            <asp:BoundField DataField="Other_Rates" HeaderText="Other_Rates" SortExpression="Other_Rates" />
                            <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox1" runat="server" />
                                </ItemTemplate>
                            </asp:TemplateField>

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Добавьте OnRowDataBound, как это

     <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" Font-Size="Small" Width="100%" OnRowDataBound="GridView1_RowDataBound">
               <Columns>
           <asp:BoundField DataField="Supplier" HeaderText="Supplier" SortExpression="Supplier" />
          <asp:BoundField DataField="Term" HeaderText="Term" SortExpression="Term" />
          <asp:BoundField DataField="Tariff" HeaderText="Tariff" SortExpression="Tariff" />
          <asp:BoundField DataField="SC" HeaderText="SC" SortExpression="SC" />
          <asp:BoundField DataField="Charge" HeaderText="Charge" SortExpression="Charge" />
          <asp:BoundField DataField="Unit_Rate" HeaderText="Unit_Rate" SortExpression="Unit_Rate" />
            <asp:BoundField DataField="Day_Rate" HeaderText="Day_Rate" SortExpression="Day_Rate" />
               <asp:BoundField DataField="Night_Rate" HeaderText="Night_Rate" SortExpression="Night_Rate" />
              <asp:BoundField DataField="Weekday_Rate" HeaderText="Weekday_Rate" SortExpression="Weekday_Rate" />
               <asp:BoundField DataField="Eve_Wkend_Rate" HeaderText="Eve_Wkend_Rate" SortExpression="Eve_Wkend_Rate" />
              <asp:BoundField DataField="Eve_Wkend_Night_Rate" HeaderText="Eve_Wkend_Night_Rate" SortExpression="Eve_Wkend_Night_Rate" />
             <asp:BoundField DataField="Winter_Rate" HeaderText="Winter_Rate" SortExpression="Winter_Rate" />
              <asp:BoundField DataField="Other_Rates" HeaderText="Other_Rates" SortExpression="Other_Rates" />
             <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
              <asp:TemplateField>
                 <ItemTemplate>
                       <asp:CheckBox ID="CheckBox1" runat="server" />
                 </ItemTemplate>
               </asp:TemplateField>
 </asp:GridView>

в вашем коде

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string strScript = "uncheckOthers(" + ((CheckBox)e.Row.Cells[0].FindControl("CheckBox1")).ClientID + ");";
                ((CheckBox)e.Row.Cells[0].FindControl("CheckBox1")).Attributes.Add("onclick", strScript);
            }
        }
        catch (Exception Ex)
        {
            //report error
        }        
    }

Добавить скрипт вроде этого

<script type="text/javascript" language="javascript">
    function uncheckOthers(id)
    {        
        var elm = document.getElementsByTagName('input');        
        for(var i = 0; i < elm.length; i++)
        {            
            if(elm.item(i).type == "checkbox" && elm.item(i)!=id)
                elm.item(i).checked = false;
        }
    }
    </script>

и готово

0 голосов
/ 28 июня 2018

Изменить определение флажка, как показано ниже в вашем пользовательском интерфейсе

 <asp:checkbox id="CheckBox1" runat="server" oncheckedchanged="CheckBox1_CheckedChanged"/>

В вашем чекбоксе отметьте измененное событие, попробуйте

CheckBox chk = sender as CheckBox;
GridViewRow gvr = (GridViewRow)chk.NamingContainer;
if(chk.Checked)
{
   foreach (GridViewRow row in grid.Rows)
   {
      if (gvr != row && ((CheckBox)row.FindControl("CheckBox1")).Checked)
      {
          chk.Checked = false.
      }            
   }
}

Примечание: - Рекомендуется AS @Tim. Если вы хотите, чтобы за один раз был выбран только один элемент, попробуйте использовать RadioButtom

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...