C# Datalist.DataSource问题
我有1个C# Datalist.DataSource问题,c#,asp.net,datalist,C#,Asp.net,Datalist,我有1个DataList,和2个SqlDataSource 我最初将DataList1设置为与SqlDataSource1 我有一个按钮可以将DataSource更改为SqlDataSource2 DataList1.DataSource = SqlDataSource2; DataList1.DataBind(); 但这样做会让我犯错误 System.InvalidOperationException:'数据源和数据源ID 在“DataList1”上定义。删除一个定义。” 有什么想法吗?有没
DataList
,和2个SqlDataSource
我最初将DataList1设置为与SqlDataSource1
我有一个按钮可以将DataSource
更改为SqlDataSource2
DataList1.DataSource = SqlDataSource2;
DataList1.DataBind();
但这样做会让我犯错误
System.InvalidOperationException:'数据源和数据源ID
在“DataList1”上定义。删除一个定义。”
有什么想法吗?有没有办法重置数据源
我的html
<form id="form1" runat="server">
<div>
</div>
<asp:DataList ID="DataList1" runat="server" DataKeyField="ID" DataSourceID="SqlDataSource1" RepeatColumns="3" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Image") %>' Width="300px" />
<br />
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
<br />
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [items]"></asp:SqlDataSource>
<br />
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [items] WHERE ([Name] = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="Name" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
从错误中,您需要将
数据源
或数据源ID
定义为数据列表
,而不是在数据列表
HTML数据源ID
中同时定义,并且在定义另一个数据数据源
后需要清除它
DataList1.DataSourceID = null;
DataList1.DataSource = SqlDataSource1;
DataList1.DataBind();
或者从DataList
HTML中删除DataSourceID=“SqlDataSource1”
,并在页面加载中定义DataSource
,然后您可以直接将DataList1.DataSource
设置为需要DataSource
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataList1.DataSource = SqlDataSource2;
DataList1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
DataList1.DataSource = SqlDataSource1;
DataList1.DataBind();
}
请共享您的网格HTMLSure。我已经编辑了我的帖子