asp:GridView文本框始终返回空值

时间:2010-05-14 15:05:17

标签: .net asp.net gridview

我使用以下代码

向gridview添加了一些文本框
<asp:TemplateField HeaderText="STD<br/>ID">
       <ItemStyle BackColor="LightBlue" />
          <ItemTemplate>
          <div style="font-size:xx-small; overflow:hidden;">
          <asp:TextBox ID="txtStandard" EnableViewState="true" Height="10" Font-Size="XX-Small" Width="50" Text='<%# bind("STANDARD_ID") %>' runat="server"></asp:TextBox>
       <asp:AutoCompleteExtender ID="AutoCompleteExtenderDemo" runat="server" 
            TargetControlID="txtStandard" ServiceMethod="GetCompletionList"
            MinimumPrefixLength="1" CompletionInterval="1000"
            EnableCaching="true" CompletionSetCount="20">
        </asp:AutoCompleteExtender>
                        </div>



                    </ItemTemplate>
                </asp:TemplateField>

我想将更新的值保存到数据库,但是当我尝试使用

访问值时
string strs = ((TextBox)TwoHeadedGridView1.Rows[0].FindControl("txtStandard")).Text;

它总是返回所有行的空白值,同样的事情发生在下拉列表中它返回我最初选择的值,即在写下拉框时选择的值,我的asp表单上没有重复的ID,这是我第一次自定义gridview,我想以某种方式让它运行,

有人可以建议我纠正......

我确实检查过是否存在任何重复的ID,

2 个答案:

答案 0 :(得分:4)

我在这里找到了解决这个问题的方法: http://www.eggheadcafe.com/software/aspnet/29602882/gridview--cant-get-text.aspx

请记住,网页基本上是无状态的东西!

当您的GridView触发事件时,您的Page_Load方法会执行,然后执行处理GridView事件的方法。我仍然无法相信自己的眼睛,但似乎即使您手动将GridView数据源中的值分配给TextBoxes,当GridView.DataBind方法时,用户输入的值也会被删除执行。

简而言之,如果您的代码与我的相似,那么您的Page_Load方法中就有这两行代码:

  

myGridView.DataSource = someDataSet;
    myGridView.DataBind();

要解决此问题,请将其更改为以下内容:

  

if(!IsPostBack)
  {
  myGridView.DataSource = someDataSet;
    myGridView.DataBind();
  }

顺便说一句,我在VB.net工作,所以请让我知道我已正确转换为C#。我想听听这对你有用!

答案 1 :(得分:0)

您在哪里尝试访问这些值?如果您在RowUpdated函数中访问它们,则值将为空。在RowUpdating期间访问它们,并确保取消更新。