#.net #asp.net #sql #gridview #checkbox
#.net #asp.net #sql #просмотр сетки #флажок
Вопрос:
У меня есть gridview, который содержит флажки и поля в базе данных sql Server, которая имеет тип данных bit
.
Если значение в таблице базы данных установлено равным 1
, то флажок в gridview должен быть установлен и отключен, в противном случае его следует снять и включить.
Это должно произойти во время привязки данных. Как выполнить эту задачу?
Комментарии:
1. AFAIK, в таблице уже есть столбец типа флажка.
Ответ №1:
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Enabled='<%# Eval("ColumnName") ? false : true %>' Checked='<%# Eval("ColumnName") %>' />
</ItemTemplate>
</asp:TemplateField>
Ответ №2:
Вы должны указывать напрямую, когда когда-либо объявляете в gridview, как показано ниже.
<ItemTemplate>
<asp:CheckBox ID="chkAlert1" runat="server" Visible="true" Enabled="false" Checked='<%# DataBinder.Eval(Container,"DataItem.Alert") %>' />
<asp:CheckBox ID="chkAlert" runat="server" Visible="false" Enabled="true" Checked='<%# DataBinder.Eval(Container,"DataItem.Alert") %>' />
</ItemTemplate>
Ответ №3:
Вы могли бы использовать TemplateField и событие RowDataBound в GridView для достижения того, чего вы хотите. Вот полный пример:
ASPX:
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="ChkMyBitColumn" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Codebehind:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
'create some Testdata'
BindGrid()
End If
End Sub
Private Sub BindGrid()
Dim tbl As New DataTable
Dim rnd As New Random
tbl.Columns.Add(New DataColumn("MyBitColumn", GetType(Boolean)))
For i As Int32 = 1 To 10
Dim row As DataRow = tbl.NewRow
row("MyBitColumn") = rnd.Next(1, 3) Mod 2 = 0 'get a random boolean'
tbl.Rows.Add(row)
Next
Me.GridView1.DataSource = tbl
Me.GridView1.DataBind()
End Sub
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim row = DirectCast(e.Row.DataItem, DataRowView).Row
Dim MyBitColumnValue = DirectCast(row("MyBitColumn"), Boolean)
Dim ChkMyBitColumn = DirectCast(e.Row.FindControl("ChkMyBitColumn"), CheckBox)
ChkMyBitColumn.Checked = MyBitColumnValue
ChkMyBitColumn.Enabled = Not ChkMyBitColumn.Checked
End If
End Sub
Ответ №4:
int o = 0;
foreach (GridViewRow row in GridView1.Rows)
{
if (z == ds1.Tables[4].Rows[o]["Name"].ToString())
{
CheckBox chk = (CheckBox)row.FindControl("chkusergroup");
chk.Checked = true;
}
else
{
CheckBox chk = (CheckBox)row.FindControl("chkusergroup");
chk.Checked = false;
}
o ;
}`enter code here`
Gridview1 — это идентификатор Gridview.
Z — это строка, которая содержит значение.
Я проверяю для одного столбца в каждой строке, совпадает ли он с ‘z’, и если он совпадает, то установите флажок в флажок.
O — счетчик для итерации в каждой строке.