我有一个datalist控件,它有一些记录,它还在datalist的itemtemplate中有一个名为cb1的子控件复选框。
我想要做的就是点击页面上的提交按钮,所有已选中的记录都应显示在下面的转发器中。我设法将已检查记录的item.index值放入数组中。但我不知道如何将所选数据显示到转发器中。
这是页面的图像。 Image
我的代码
private void list_bind()
{
SqlDataAdapter adp = new SqlDataAdapter("select * from tbbook", ConfigurationManager.ConnectionStrings["cs"].ConnectionString);
DataSet ds = new DataSet();
adp.Fill(ds);
DataList1.DataSource = ds;
DataList1.DataBind();
Repeater1.DataSource = ds;
Repeater1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
string a = null;
foreach (DataListItem item in DataList1.Items)
{
CheckBox chk = (CheckBox)item.FindControl("cb1");
if(chk.Checked)
{
a = Convert.ToString(DataList1.DataKeys[item.ItemIndex]);
}
}
}
}
Html代码
<body>
<form id="form1" runat="server">
<asp:DataList ID="DataList1" runat="server" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" GridLines="Both" Height="206px" RepeatColumns="3" OnSelectedIndexChanged="DataList1_SelectedIndexChanged" DataKeyField="bookid">
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<ItemStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<ItemTemplate>
<b>Title: </b><%#Eval("booktit")%><br />
<b>Author: </b><%#Eval("bookaut") %><br />
<b>Pub: </b><%#Eval("bookpub") %><br />
<b>Price: </b><%#Eval("bookprc") %><br />
<asp:CheckBox ID="cb1" Text="Buy" runat="server" />
</ItemTemplate>
<SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
</asp:DataList>
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" />
<br />
<br />
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<b>Title: </b><%#Eval("booktit")%><br />
<b>Author: </b><%#Eval("bookaut") %><br />
<b>Pub: </b><%#Eval("bookpub") %><br />
<b>Price: </b><%#Eval("bookprc") %><br />
</ItemTemplate>
</asp:Repeater>
</form>
答案 0 :(得分:0)
将DataListItem放入一个新数组中,让它称之为复制和放大删除所有未经检查的索引,然后将其与转发器绑定。