/ / asp.net checkboxlist lie à plusieurs colonnes - c #, asp.net, checkboxlist

asp.net checkboxlist lier à plusieurs colonnes - c #, asp.net, checkboxlist

J'ai un scénario où je veux lier trois colonnes différentes à la liste de contrôle

Datatable dt = GetDataTable("Select col1,col2,col3 from mytable where id={0}");

Je peux obtenir les données via ma méthode GetDataTable, et maintenant je veux lier ces données à la liste de contrôle et les valeurs col1, col2 et col3 sont des valeurs booléennes,

Checkboxlist devrait pouvoir se lier à ces valeurs bool. Et aussi j'ai besoin de savoir comment obtenir les valeurs sélectionnées afin de mettre à jour ma base de données.

Mettre à jour : -

Les exemples de données seraient comme - personnels, professionnels, autres

DataTable serait -

Personal Business Other
True     False    True

Je dois représenter ceci dans la checkbox

Je fais quelque chose comme ça et je suis sûr qu'il existe un moyen meilleur / facile de le faire

foreach (ListItem item in chkBox.Items)
{
item.Selected = ShouldItemBeSelected(item.Text);
}

private bool ShouldItemBeSelected(string value)
{   string id = getId();
string query = string.Format("select {0} FROM [dbo].[mytable] where ID="{1}"",value, id);
bool result = false;
DataTable dt = GetDataTable(query);
foreach (DataRow row in dt.Rows)
{
result = Convert.ToBoolean(row[value]);
}

return result;
}

Merci!

Réponses:

0 pour la réponse № 1

Quelque chose comme ça je pense

page .aspx

     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="cbIsActive" runat="server"
Text="<%# Eval("IsActive") == DBNull.Value ? false : Convert.ToBoolean(Eval("IsActive"))%>">
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<%-- Checkbox List To binding to sqldatasourc--%>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBoxList ID="CheckBoxList1" runat="server" DataSourceID="SqlDataSource1"
DataTextField="IsMultiRole" DataValueField="IsMultiRole">
</asp:CheckBoxList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WaltonCrmConnectionString %>"
SelectCommand="select top 10 IsMultiRole from Users"></asp:SqlDataSource>

et fichier .cs

  GridView1.DataSource = DbUtilities.GetDataTableFromSqlQuery("select top 10 IsMultiRole,IsActive from Users");
GridView1.DataBind();

où IsActive est un champ de bits nullable dans le serveur SQL 2014

EDIT: CheckBox est lié à C'est actif et checkboxlist est IsMultiRole