将结果添加到数据集中,而不删除以前的行
本文关键字:删除 添加 结果 数据 集中 数据集 | 更新日期: 2023-09-27 18:03:15
我有一个具有这种结构的Panel
<asp:Panel ID="Custom" Visible="false" runat="server">
Search:
<asp:TextBox ID="TextBox1" AutoPostBack="true" runat="server">
</asp:TextBox>
<asp:ListBox ID="ListBox1" Visible="true" runat="server" DataSourceID="UserSearchSource" SelectionMode="Multiple" DataTextField="username" DataValueField="username"></asp:ListBox>
<asp:SqlDataSource ID="UserSearchSource" runat="server" ConnectionString="<%$ ConnectionStrings:fscauth %>" SelectCommand="SELECT [user] FROM [table] WHERE ([user] LIKE '%' + @username + '%') ORDER BY [username]">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="user" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<br /> <br /> <asp:Button ID="Button2" CausesValidation="false" runat="server" Text="Add" OnClick="Button2_Click" />
</asp:Panel>
因此,我有一个TextBox
,它在数据库中扮演用户搜索者的角色,结果显示在ListBox
上。在添加Button_Click
时,它将结果填充到DataTable
中,然后将其用作Gridview
数据源。我想实现的是,每次单击Add按钮时,不仅会将结果添加到DataTable
中,而且不会删除以前的结果列表。目前我一直在使用的是:
protected void Button2_Click(object sender, EventArgs e)
{
List<string> lista = getUserList(ListBox1);
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("user", typeof(string)));
for (int i = 0; i < lista.Count;i++ )
{
dr = dt.NewRow();
dr["user"] = lista[i].ToString();
dt.Rows.Add(dr);
}
ViewState["CurrentTable"] = dt;
GridView1.Visible = true;
GridView1.DataSource = dt;
GridView1.DataBind();
Button3.Visible = true;
Button1.Visible = true;
MessagePanel.Visible = true;
}
以及CCD_ 8函数,其为:
protected List<string> getUserList(ListBox lb)
{
List<string> li = new List<string>();
// List<string> lista = (List<string>)Session["list"];
foreach (ListItem l in lb.Items)
{
if (l.Selected)
{
li.Add(l.Text);
}
}
Session["list"] = li;
List<string> lista = (List<string>)Session["list"];
return lista;
}
我不太确定我想要的是否能实现,但如果有人能在这方面帮助我,那就太好了!
您需要更改这一行
DataTable dt = new DataTable();
与其创建新表,不如获得现有的表
DataTable dt = GridView1.DataSource as DataTable;
意味着获取您已经分配的gridview的数据源,并在其中添加行,而不是每次都创建新表