0

我有以下電網:的UpdateCommand問題在一個TemplateField在asp.net GridView的

<asp:GridView DataSourceID="accountsDataSource" DataKeyNames="Id" ShowEditButton="true" ...> 

    <asp:TemplateField HeaderText="Name"> 
    <ItemTemplate> 
     <asp:Hyperlink ID="lnkGridEditEntry" runat="server" Text='<%# Bind("Name")%>' NavigateUrl="..." /> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:TextBox ID="txtGridAccountName" runat="server" Text='<%# Bind("Name") %>' /> 
    </EditItemTemplate> 
    </asp:TemplateField> 

</asp:GridView> 

<asp:SqlDataSource ID="accountsDataSource" SelectCommand= "..." DeleteCommand= "..." UpdateCommand="update Account set [Name][email protected] where [Id][email protected]"> 
    <UpdateParameters> 
    <asp:Parameter Name="Name" /> 
    <asp:Parameter Name="Id" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

當我點擊「編輯」按鈕,並嘗試更新名稱,上面的代碼永遠不會更新名稱

當我改變名稱更新參數

<asp:ControlParameter ControlID="txtGridAccountName" Name="Name" PropertyName="Text" Type="String" /> 

頁面崩潰,「無法找到ControlParameter名稱控制txtGridAccountName」。我相信這是因爲模板字段中的文本框在呈現網格時顯示不同的ID(類似於ct100 $ txtGridAccountName $ ..),並且顯然未找到它。

的戶頭名被渲染爲在首位的模板場,因爲我顯示該爲紐帶,以一個細節/交易頁面。

如果我刪除模板領域和顯示名稱爲這個工程。

任何幫助解決這一問題表示讚賞。

+0

對不起,代碼消失。我會再次編輯和編碼。 – Shankar 2009-09-14 22:40:19

+0

這個問題本身就消失了,我什麼也沒做。我相信VS有什麼奇怪的問題。我現在可以使用ItemTemplates了。 – Shankar 2009-11-09 23:40:51

回答

0

要調試這個你自己,你應該掛鉤到SQL數據源更新事件,並在GridView行更新事件來檢查問題兩者。

不管怎麼說,不知道你的數據庫設計,我的猜測是,你缺少的參數更新的類型。嘗試這樣的:

<UpdateParameters> 
    <asp:Parameter Name="Name" Type="String" /> 
    <asp:Parameter Name="Id" Type="Int64" /> 
</UpdateParameters> 
相關問題