2017-09-01 35 views
0

我一直在爲這個問題整天奮戰。我有一個asp:Gridview幾個頁腳模板有幾個TextBox字段,一個DropDown和一個CheckBox。我隱藏頁腳,直到單擊添加記錄asp:button。這一切都有效,我可以在文本框中輸入數據,從下拉菜單中選擇選項並循環複選框。現在,當我嘗試將數據保存到數據庫時,我使用此代碼。如何從ASP gridview頁腳獲取所有值

protected void MembersGridView_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName.Equals("EmptyInsert")) 
    { 

    } 

    if (e.CommandName.Equals("Insert")) 
    { 

     int Role =Convert.ToInt32((MembersGridView.FooterRow.FindControl("ddlRole") as DropDownList).SelectedItem.Value); 
     string FirstName = (MembersGridView.FooterRow.FindControl("txtLastName") as TextBox).Text; 
     string LastName = (MembersGridView.FooterRow.FindControl("txtLastName") as TextBox).Text; 
     TextBox UserName = MembersGridView.FooterRow.FindControl("txtUserName") as TextBox; 
     TextBox Email = MembersGridView.FooterRow.FindControl("txtEmail") as TextBox; 
     CheckBox active = MembersGridView.FooterRow.FindControl("chkActive") as CheckBox; 
     DbContext.AAHMembersAdd(Role, FirstName, LastName, UserName.Text, Email.Text, active.Checked); 

     //MembersGridView.EditIndex = -1; 

     MembersGridView.DataSource = DbContext.VW_Members.ToList(); 
     DataBind(); 
    } 
} 

<asp:TemplateField HeaderText="First Name" ItemStyle-Width="100"> 
    <ItemTemplate> 
     <asp:Label ID="lblFirstName" runat="server" Text='<%# Eval("firstname")%>'></asp:Label> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:TextBox ID="txtFirstName" runat="server" Text='<%# Eval("firstname")%>'></asp:TextBox> 
    </EditItemTemplate> 
    <FooterTemplate> 
     <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox> 
    </FooterTemplate> 
</asp:TemplateField> 

我已經添加了ASPX爲模板的一個字段都是相同的,因爲這一個,除了下拉和CheckBox

下拉和複選框數據然而回到我的所有文本框值都是作爲空字符串返回。我在這裏錯過了什麼。正如你所看到的,我已經嘗試了幾種不同的方式,但結果是一樣的。

+0

您可以發佈您的.aspx? – w0051977

+0

這是頁腳模板的aspx外觀樣式@ -w0051977 – Perry

回答

0

從我能看到的;你不是將文本設置爲任何東西 - 因此textbox.text值是一個空字符串。嘗試改變這種代碼:

<FooterTemplate> <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox> </FooterTemplate> 

這樣:

<FooterTemplate> <asp:TextBox ID="txtFirstName" text="hello" runat="server"></asp:TextBox> </FooterTemplate> 

也改變這一點:

string FirstName = (MembersGridView.FooterRow.FindControl("txtLastName") as TextBox).Text; 

這樣:

string FirstName = (MembersGridView.FooterRow.FindControl("txtFirstName") as TextBox).Text; 
+0

第一次更改建議導致Hello出現在文本框中。 你好在C#代碼中被選中。你忘了爲最後的建議添加新的代碼嗎?這兩條線都是一樣的 – Perry

+0

@Perry,它們是不一樣的。看看內部的支架。 – w0051977

+0

謝謝@ w0051977經過更多的審查後,似乎沒有任何字段正在被讀取。下拉菜單和複選框被設置回默認值。我相信這是一個回發問題,並且發現我沒有代碼中的更新面板。試圖找出更新面板的位置。該應用程序使用一個母版頁和2個其他母版頁嵌套,所以我有一些問題找出更新面板的位置。試圖將其添加到我的網頁,但只是不能得到它的工作。將嘗試將其添加到母版頁。 – Perry