首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datalist.DataSource问题

Datalist.DataSource问题
EN

Stack Overflow用户
提问于 2018-04-23 22:04:59
回答 1查看 421关注 0票数 1

我有1 DataList和2 SqlDataSource

我最初将DataList1设置为与SqlDataSource1配对

我有一个按钮可以将DataSource更改为SqlDataSource2

代码语言:javascript
复制
DataList1.DataSource = SqlDataSource2;
DataList1.DataBind();

但是这样做,我就犯了个错误

System.InvalidOperationException:‘DataSource和DataSourceID都定义在'DataList1’上。删除一个定义。

有什么想法吗?有办法重置数据源吗?

我的html

代码语言:javascript
复制
<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" />
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 22:56:54

从错误中,您需要将DataSourceDataSourceID定义为DataList,而不是同时定义DataList中的HTMLDataSourceID,一旦定义了另一个数据DataSource,就需要清除它。

代码语言:javascript
复制
DataList1.DataSourceID = null;
DataList1.DataSource = SqlDataSource1;
DataList1.DataBind();

或者将DataSourceID="SqlDataSource1"DataList HTML中删除,并在页面加载中定义DataSource,这样就可以将DataList1.DataSource设置为直接需要DataSource

代码语言:javascript
复制
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();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49990596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档