我构建了一个演示应用程序,其中我使用了一个复选框列表来获取爱好并在数据库中输入这些值,如下所示:
复选框列表的ASP代码为:
<asp:CheckBoxList ID="chkboxlsthobbies" runat="server" RepeatDirection="Horizontal">
<asp:ListItem>cricket</asp:ListItem>
<asp:ListItem>football</asp:ListItem>
<asp:ListItem>pool</asp:ListItem>
<asp:ListItem>basketball</asp:ListItem>
<asp:ListItem>rugby</asp:ListItem>
</asp:CheckBoxList>
<asp:Button ID="Button1" runat="server" Text="submit" OnClick="Button1_Click" />
在数据库中输入该值的相应C#代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
string str = string.Empty;
foreach (ListItem item in chkboxlsthobbies.Items)
{
if (item.Selected)
{
str += string.Format("{0}, ", item.Text);
}
}
SqlCommand cmd = new SqlCommand("insert into [CheckboxTable] values('" + str + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
bindgrid();
}
现在我使用Gridview来绑定表数据并显示它,并且在那里,我有一个onRowEditing和onRowDeleting事件。
Gridview代码如下:
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="gvtxtedit" runat="server" CommandName="Edit" Text="Edit" />
<asp:Button ID="gvtxtdelete" runat="server" CommandName="Delete" Text="Delete" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Hobbies">
<ItemTemplate>
<asp:Label ID="gvlblfirstname" runat="server" Text='<%#Eval("Hobbies") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Gridview绑定方法如下:
protected void bindgrid()
{
SqlCommand cmd = new SqlCommand("select * from [CheckboxTable]", con);
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
现在我完全陷入这个问题通常我能够将任何字段的值提取回TextBox或表单上的下拉列表
示例:
txtfirstname.Text = dt.Rows[0]["firstname"].ToString();
在onRowEditing事件中将字段值提取回表单上的控件,我可以为文本框和下拉列表执行此操作。
问题是我无法弄清楚如何获取由&#34;,&#34;分隔的多个值。回到一个复选框列表,因为有多个值,我已经尝试了很长时间了。
最后一个问题是将数据库中的值提取回GridView的onRowEditing事件中的复选框列表。
答案 0 :(得分:0)
我在onRowEditing Gridview函数上写了这个函数来实现上述功能,即:将保存在数据库中的复选框列表值返回到Gridview的onRowEditing事件内表单上的复选框列表
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
chkboxlsthobbies.ClearSelection();
//Get the ID
int id = Int32.Parse(GridView1.DataKeys[Int32.Parse(e.NewEditIndex.ToString())].Values["ID"].ToString());
SqlCommand cmd = new SqlCommand("select * from CheckboxTable where ID = '"+id+"'", con);
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
// Get the exact column and save it in a string.
string str = dt.Rows[0]["Hobbies"].ToString();
string[] strlist = str.Split(',').Select(t => t.Trim()).ToArray(); //Split into array and trim it.
//Finally the main functionality to check the values in checkbox list.
foreach (string s in strlist)
{
foreach (ListItem item in chkboxlsthobbies.Items)
{
if (item.Value == s)
{
item.Selected = true;
break;
}
}
}
谢谢。