2009-11-19 56 views
0

我想從我的datagrid使用事件處理程序和ItemCommand更新數據庫表。我設法調用例程,除了插入到我的數據庫中的文本是空的,一切正常。我設法跟蹤回到沒有從我的datagrids頁腳傳遞到sql參數的文本。我試着先使用一個字符串,然後將其傳遞給參數,但它們也是空的。我正在使用以下行訪問該控件。從Datagrid向數據庫表添加新行

sqlcmd.Parameters.Add("@GoodsDesc", SqlDbType.VarChar).Value = CType(e.Item.FindControl("txtGoodsDesc"), TextBox).Text 

控制本身使用

<asp:TemplateColumn HeaderText="Goods Descriptions"> 
    <ItemTemplate> 
     <asp:Label runat="server" ID="lblGoodsDesc" Text='<%# Eval("GoodsDesc") %>'></asp:Label> 
    </ItemTemplate> 
    <FooterTemplate> 
     <asp:TextBox ID="txtGoodsDesc" runat="server" TextMode="MultiLine" Rows="3"></asp:TextBox> 
    </FooterTemplate> 
</asp:TemplateColumn> 

我在這裏失去了一些東西界定?這就像在我調用它之前,頁腳中的文本沒有被綁定到控件上。

+0

嗨,謝謝你的建議。我已經發現,當我點擊鏈接添加行時,該程序正在調用Page_Load,因此文本框在嘗試添加它們之前實際上已被清空。我並不知道Page_Load會先被調用。我對如何解決這個問題有幾點想法,現在我只需要希望我能夠解決這個問題。 – 2009-11-22 21:18:15

回答

0

所以基本上我發現了正在發生的問題是,VB.Net在事件本身被調用之前調用Page_Load,並且在Page_Load方法中,我調用了填充數據網格的方法,在讀取它們中的值之前清除了頁腳中的文本框。

要停止這個我放在一個條件待命的方法在Page_Load中

If Not IsPostBack Then 

    FillDataGrid() 

End If 

然後我叫FillDataGrid()函數在處理程序的最後一步,這意味着數據在讀然後datagrid被綁定到新的值。

0

嗨瑞安,我們將需要更多的代碼,然後就是這樣。你在哪裏添加+此參數另外在哪裏是e.Item.FindControl它是什麼事件?

你需要檢查,如果你是在頁腳控制:

protected void dg_ItemDataBound(object sender, DataGridItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Footer) 
     { 
      if (dg.EditItemIndex != -1) 
      { 
       ((TextBox)e.Item.FindControl("txtGoodsDesc")).Text 
      } 
     } 
    } 

或者在vb.net

if (e.Item.ItemType = ListItemType.Footer) then 
    Dim s as String=String.Empty 
    s=CType(e.Item.FindControl("txtGoodsDesc"), TextBox).Text 
end if