Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Datalist.DataSource问题_C#_Asp.net_Datalist - Fatal编程技术网

C# Datalist.DataSource问题

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”上定义。删除一个定义。” 有什么想法吗?有没

我有1个
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。我已经编辑了我的帖子