C# 响应DataList中的按钮事件

C# 响应DataList中的按钮事件,c#,asp.net,c#-4.0,datalist,C#,Asp.net,C# 4.0,Datalist,经过一些帮助和代码审查,我得到了这个工作没有任何错误。但是,当我按下按钮时,什么也没有发生,文本框没有更新 我还介绍了如何访问DataList中的数据,以便在“DataList1_ItemCommand”函数中对其进行操作 <p> <asp:TextBox ID="NameTextBox" runat="server" CssClass="textEntry" TextMode="SingleLine" Rows="0" Height=

经过一些帮助和代码审查,我得到了这个工作没有任何错误。但是,当我按下按钮时,什么也没有发生,文本框没有更新

我还介绍了如何访问DataList中的数据,以便在“DataList1_ItemCommand”函数中对其进行操作

<p>   
 <asp:TextBox ID="NameTextBox" runat="server" CssClass="textEntry" 
                TextMode="SingleLine" Rows="0" Height="20px" Width="250px" Enabled="False"></asp:TextBox>
    <asp:DataList 
         ID="DataList1" 
         runat="server" 
         RepeatColumns="1" CellPadding="4" ForeColor="#333333" 
        GridLines="Both" Height="132px" Width="427px">
        <HeaderTemplate>
            Data
        </HeaderTemplate>
        <ItemTemplate>
             <%# DataBinder.Eval(Container.DataItem, "ref") %>
             <%# DataBinder.Eval(Container.DataItem, "name") %>
             <%# DataBinder.Eval(Container.DataItem, "city") %>
             <%# DataBinder.Eval(Container.DataItem, "ip") %>
             <%# DataBinder.Eval(Container.DataItem, "timestamp") %>
             <asp:Button ID="manage" runat="server" CommandName="manageWiki" Text="Granska"  Visible="True" />
        </ItemTemplate>
        <AlternatingItemStyle BackColor="White" ForeColor="#284775" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle Font-Bold="true" Font-Names="Arial" BackColor="#5D7B9D" 
            ForeColor="White" />
        <ItemStyle Font-Names="Arial" Font-Size="Small" BackColor="#F7F6F3" 
            ForeColor="#333333" />
        <SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    </asp:DataList>
</p>

我觉得你的
页面加载有点古怪。您正在执行
DataList1.DataBind()
另外,
getSuggestions
也会每次执行绑定。假设没有在
DataList
控件(看起来没有)或父控件中禁用
ViewState
,则无需每次绑定

通常,如果您修改通过客户端脚本提供的数据并将其发回,而该数据与
ViewState
所期望的数据不匹配,则会发生此错误。。。你确定这就是全部代码吗


编辑:我建议尽可能多地注释代码,以便只执行您遇到问题的功能。您发布了很多代码,这些代码可能只是给问题蒙上了一层阴影。把它降到一个非常基本的代码子集,然后发布代码和重新创建的步骤,因为在你有它的时候,我没有看到任何问题。您是否正在执行任何javascript代码来修改任何将被发回的数据?

好的,我明白了您的意思,“如果您修改通过客户端脚本提供的数据并将其发回,而该数据与ViewState期望的数据不匹配,则通常会发生此错误”,并且它可以正常工作。我会编辑上面的代码。@Mikael你的问题解决了吗?如果这个答案有助于你不要忘记将其设置为被接受的答案,甚至放弃投票:)部分解决了,但我意识到我问的问题是错误的,所以我更新了它,也许我应该开始一个新问题?@Mikael按钮没有启动,因为你的
数据列表中没有连接
ItemCommand
事件。应该有一个类似于
OnItemCommand=“DataList1\u itemcond”
的属性。至于访问
数据列表中的数据,您不应该直接访问它。如果您想从中获取一些数据,应该先加载它,以便将其传递到
ItemCommand
事件中,而无需查找它。
protected void Page_Load(object sender, EventArgs e)
{

        if (!IsPostBack)
        {
             //getSuggestions fill the DataList with data
            getSuggestions("SELECT [ref], [city], [name], [timestamp], [ip] FROM [table1] ORDER BY timestamp");
        }

}

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
    if (e.CommandName == "manageWiki")
    { 
        //Just update the TextBox
        NameTextBox.Text = "ref that is inside the Datalist1";
    }
}