Ответить на события кнопки в DataList - PullRequest
1 голос
/ 11 августа 2010

После некоторой помощи и просмотра кода я получил это без каких-либо ошибок.Однако когда я нажимаю кнопку, ничего не происходит, текстовое поле не обновляется.

Я также удивляюсь, как я могу получить доступ к данным внутри 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 голосов
/ 11 августа 2010

Ваш PageLoad немного странный, я думаю. Вы выполняете DataList1.DataBind(); при начальной загрузке, и ничему не назначается DataList1 для привязки.

Также getSuggestions также делает привязку каждый раз. Вам не нужно связываться каждый раз, предполагая, что у вас не отключен ViewState в элементе управления DataList (который, как вам кажется, нет) или родительском элементе управления.

Обычно эта ошибка возникает, если вы изменяете данные, которые были обработаны с помощью сценариев на стороне клиента, и отправляете их обратно, и они не совпадают с ожидаемыми ViewState ... вы уверены, что это все код

РЕДАКТИРОВАТЬ: Я предлагаю закомментировать столько кода, сколько вы можете просто выполнить функцию, с которой у вас возникли проблемы. Вы публикуете много кода, который, вероятно, просто затуманивает проблему. Разместите его в очень простом подмножестве кода, а затем опубликуйте код и шаги для его воссоздания, потому что, как он у вас есть, я не вижу никаких проблем. Вы делаете какой-либо код JavaScript, который изменяет какие-либо данные, которые будут отправлены обратно?

...