2010-08-10 61 views
1

經過一些幫助和審查的代碼後,我得到了這個工作沒有任何錯誤。但是,當我按下按鈕什麼都沒有發生時,文本框不會更新。迴應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"; 
    } 
} 

回答

0

PageLoad有點古怪,我認爲。你在初始加載時正在做DataList1.DataBind();,沒有任何東西分配給DataList1進行綁定。

另外getSuggestions也每次都進行綁定。假設您沒有在DataList控件(看起來您不需要)或父控件中禁用ViewState,則無需每次都綁定。

通常如果您修改通過客戶端腳本提供的數據並將其發回並且與ViewState期望的內容不匹配,則會發生此錯誤......您確定這是所有代碼?

編輯:我建議評論儘可能多的代碼,你可以執行你有問題的功能。你正在發佈很多代碼,這可能只是混淆了這個問題。把它歸結爲一個非常基本的代碼子集,然後發佈代碼和步驟來重新創建,因爲你有它,我沒有看到任何問題。你正在做任何JavaScript代碼,修改任何將被回傳的數據嗎? 「

+0

好吧我想通了你的意思是」如果你修改了通過客戶端腳本提供的數據併發布回來並且與ViewState期望的內容不匹配,通常會發生這種錯誤「作品。我將編輯上面的代碼。 – Mikael 2010-08-10 23:27:42

+0

@Mikael所以你的問題解決了嗎?如果這個答案幫助你不要忘記把它設置爲接受的答案,或者甚至給它一個投票:) – Kelsey 2010-08-11 02:06:58

+0

它部分解決了,但我意識到我問的問題是錯誤的,所以我更新了它,也許我應該已經開始一個新的問題? – Mikael 2010-08-11 07:38:17