Установите / снимите флажки в зависимости от значения базы данных - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть gridview, который содержит флажки и поля в базе данных сервера SQL, который имеет тип данных bit.

Если значение в таблице базы данных установлено на 1, то флажок в виде сетки должен быть отмечен и отключен, в противном случае его следует снять и включить.

Это должно произойти во время привязки данных. Как выполнить эту задачу?

Ответы [ 4 ]

3 голосов
/ 28 апреля 2011
<asp:TemplateField>
    <ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Enabled='<%# Eval("ColumnName") ? false : true %>' Checked='<%# Eval("ColumnName") %>' />
      </ItemTemplate>
  </asp:TemplateField>
2 голосов
/ 28 апреля 2011

Вы должны давать напрямую, когда бы вы ни объявили в сетке, как показано ниже.

 <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>
0 голосов
/ 05 декабря 2017

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 - счетчик для итерации в каждой строке.

0 голосов
/ 28 апреля 2011

Вы можете использовать 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>

Код позади:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...