C# 响应DataList中的按钮事件
经过一些帮助和代码审查,我得到了这个工作没有任何错误。但是,当我按下按钮时,什么也没有发生,文本框没有更新 我还介绍了如何访问DataList中的数据,以便在“DataList1_ItemCommand”函数中对其进行操作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=
<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()初始加载时,没有为数据列表1分配任何要绑定的内容
另外,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";
}
}