[英]How Can I get the value in the gridview footer row of textbox and dropdownlist in asp.net c# webform
[英]Get DataField value while updating row (asp GridView) asp.NET C#
我的.aspx
文件中有一個GridView控件,由我的表( Id , Surname )填充:
<asp:GridView
ID="gridView_1"
runat="server"
AutoGenerateColumns="False" <!-- used to customize my columns -->
DataKeyNames="Id"
DataSourceID="sqlDataSource_1"
OnRowUpdating="gridView_rolesTiers_RowUpdating">
<Columns>
<asp:BoundField
DataField="dbColumn_db"
HeaderText="Id"
InsertVisible="False"
ReadOnly="True" />
<asp:BoundField
DataField="dbColumn_Surname"
HeaderText="Surname"
SortExpression="RLT_Intitule">
<asp:CommandField
ShowEditButton="True" />
</Columns>
</asp:GridView>
我有一個關聯的SqlDataSource,它允許我使用存儲過程來顯示我的姓氏 :
<asp:SqlDataSource
ID="sqlDataSource_1"
runat="server"
ConnectionString="<%$ ConnectionStrings:myConString %>"
SelectCommand="procedure_Select_surnames"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
GridView
控件完美地顯示了我想要顯示的內容。
問題:現在如何通過存儲過程更新我的行而不離開當前頁面?
我發現這個問題的答案不是我想要的,或者是如此復雜以至於需要改變我的GridView
的結構。
對於那些搜索使用存儲過程更新行的簡單方法的人來說,這是一個快速的解決方案:
第1步
在GridView
控件中添加CommandField以允許用戶更新行。 必須將此CommandField
放入<Columns> <!-- here --> </Columns>
標記中:
<asp:GridView
ID="gridView_1"
runat="server"
AutoGenerateColumns="False" <!-- used to customize my columns -->
DataKeyNames="Id"
DataSourceID="sqlDataSource_1"
OnRowUpdating="gridView_rolesTiers_RowUpdating">
<Columns>
<!-- your precedent rows -->
<asp:CommandField ShowEditButton="True" />
</Columns>
<!-- nexts attributes -->
</asp:GridView>
第2步
添加事件處理程序OnRowUpdating ,當您點擊“更新”按鈕但在用戶驗證更新之前發生:
<asp:GridView
ID="gridView_1"
<!-- others parameters -->
OnRowUpdating="gridView_1_RowUpdating" />
<!-- ... -->
</asp:GridView>
第3步
您現在將更新我們剛添加的函數gridView_1_RowUpdating
以獲取我們需要更新的變量。 以下是更新存儲過程的外觀:
CREATE PROCEDURE [dbo].[storedProcedure_Update_Surnames]
@id int
, @surname varchar(50)
AS
UPDATE [dbo].[table_Surnames]
SET dbColumn_Surname = @surname
WHERE dbColumn_Id = @id
RETURN 0
以下是gridView_1_RowUpdating
方法的內容:
protected void gridView_1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string surname = e.NewValues[0].ToString(); /* NewValues is the key */
string id = gridView_1.DataKeys[e.RowIndex].Values[0].ToString(); /* get the id */
sqlDataSource_1.UpdateCommand = "[storedProcedure_Update_Surnames] " + id + ", '" + surname +"'";
}
解釋:
當您單擊“更新”時,所有字段而不是鍵都變為textBox
。 這些textBox包含您編輯的字段的新(或非)值。
所有這些值都存儲在一個數組NewValues []中。 您可以使用每個textBox更新的索引來訪問這些數據(從左到右為索引順序,從0到n)。
為了完成,我通過使用我需要的值正確填充參數來使用存儲過程,並通過觸發存儲過程的行為自動更新該行。
希望對那些需要執行此類過程的人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.