2010-02-24 105 views
1

我在ASP.NET頁面上有一個GridView,其TemplateField列在ItemTemplate中有一個TextBox。然後我有一個命令字段,它應該從該TextBox中提取文本,並在運行存儲過程的SqlCommand中使用它。無法從gridview上的文本框中獲取值

這裏是我的C#代碼:

int index = Convert.ToInt32(e.CommandArgument); 
GridViewRow selectedRow = this.gvwSNConfirm.Rows[index]; 
TableCell intID = selectedRow.Cells[1]; 
int reqID = int.Parse(intID.Text); 
// Get the SN from the text box on the selected row 
TableCell snCell = selectedRow.Cells[0]; 
TextBox tbox = (TextBox)staffNum.FindControl("txtSN"); 
string stSN = tbox.Text.ToString(); 

當我添加一個破發點,看我得到正確的ID但TBOX的文字是「爲INTID和tbox.Text值」。

的加價爲兩列,我引用是

<asp:TemplateField HeaderText="SN"> 
    <ItemTemplate> 
    <asp:TextBox ID="txtSN" runat="server" MaxLength="20" Width="100px" /> 
    </ItemTemplate> 
    <HeaderStyle BackColor="#171695" Font-Names="Arial" Font-Size="Small" ForeColor="White" Wrap="true" /> 
</asp:TemplateField> 
<asp:BoundField DataField="Request" HeaderText="Request" ReadOnly="true" SortExpression="Request" /> 

任何人都可以提供任何幫助,爲什麼我不能得到從文本框中的文本?它第一次運行,但後來所有的tbox文本值已經「」。

非常感謝

安迪

NEW CODE(05/03/2010):

protected void gvwSecond_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if ((e.CommandName == "Confirm") || (e.CommandName == "Decline")) 
    { 
    int index = Convert.ToInt32(e.CommandArgument); 
    GridViewRow row = gvwSecond.Rows[index]; 

    int secondID = int.Parse(row.Cells[1].Text); 
    TextBox txtsn = ((TextBox)row.FindControl("txtSecSN")); 
    string sn = txtsn.Text; 
+0

設法讓代碼工作後,它突然停止工作,我不知道爲什麼。上面包含了正在工作的更新代碼。 – anD666

回答

1

什麼事件是該代碼?你應該e.Item.FindControl。如果你確實掌握了正確的控制方式,但是文本是空的,這意味着它要麼不被回傳,要麼被清除到別的地方。

+0

GridView的OnRowCommand事件。我會嘗試使用e.Item.FindControl。 – anD666

+0

由於使用GridViewCommandEventArgs,因此無法通過RunCommand訪問e.Item。令人討厭的是,代碼與另一個webform相同,除了控制名稱之外。 – anD666

+0

在這種情況下...不知道該怎麼告訴你。使用Fiddler並確保數據得到發佈。然後檢查代碼並確保它不會在其他地方被覆蓋/清除。 – Bryan

1

我曾經有同樣的問題。我也必須從服務器上的GridView中的TextBox中檢索文本值,並且我總是得到一個空字符串。我不得不爲Gridview和Textbox設置EnableViewState =「false」,它的功能就像一個魅力。

相關問題