2013-03-28 4 views
3

У меня есть GridView в ASP.NET с столбцом CheckBoxField, связанным с DataField из запроса в базе данных. Мне нужно иметь возможность проверить, установлено ли значение false и не проверено, если значение истинно.Установка значения по умолчанию для логического значения CheckBoxField

Это немного нестандартное, как полностью назад, как большинство элементов управления флажками работают, но есть ли способ сделать это?

ответ

2

Существует несколько подходов к этому. Вы можете попробовать:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     foreach (Control ctrl in e.Row.Cells[0].Controls) 
     { 
      if (ctrl.GetType().Name == "CheckBox") 
      { 
       CheckBox chk = (CheckBox)ctrl; 
       chk.Checked = !chk.Checked; 
      } 
     } 
    } 
} 

Не забудьте добавить правильную ячейку, где находится ваше поле checkboxfield.

Еще бы добавить TemplateField:

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" 
      Checked='<%# !Convert.ToBoolean(Eval("Status")) %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 

Вы также можете изменить свой источник данных после того, как он извлекается из сервера базы данных, таким образом, вам не нужно, чтобы изменить ваш запрос, если вы используете его в обычным способом в других местах. Скажем, у вас есть Generic List ваших деталей:

myItems.ForEach(item => item.Status = !item.Status); 

Extra JQuery версия:

<script> 
    $(function() { 
     $("#<%=GridView1.ClientID %> input[type='checkbox']").each(function() { 
      $(this).prop("checked", !$(this).prop("checked")); 
     }); 
    }); 
</script> 
+1

Сначала один работал как шарм! Огромное спасибо –

Смежные вопросы