响应DataList中的Button事件

时间:2010-08-10 21:38:49

标签: c# asp.net c#-4.0 datalist

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

我还想知道如何访问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>

代码背后:

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";
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你的PageLoad有点古怪。您在初始加载时正在执行DataList1.DataBind();而没有分配给DataList1进行绑定。

同样getSuggestions每次都会绑定。假设您没有在ViewState控件(看起来像你没有)或父控件中禁用DataList,则不需要每次都绑定。

如果您修改通过客户端脚本提供的数据并将其发回并且与ViewState期望的内容不匹配,通常会发生此错误...您确定这是所有代码?

编辑:我建议您尽可能多地注释代码,以便执行您遇到问题的功能。您发布的许多代码可能只是让问题蒙上阴影。把它归结为一个非常基本的代码子集,然后发布代码和步骤来重新创建,因为你拥有它我没有看到任何问题。你在做任何修改任何可以回发的数据的javascript代码吗?