代码之家  ›  专栏  ›  技术社区  ›  Xinus

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

  •  5
  • Xinus  · 技术社区  · 16 年前

    我使用以下代码向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的第一次交互,我想以某种方式使它运行。

    有人能建议我改正一下吗…

    我查过里面有没有重复的身份证,

    2 回复  |  直到 16 年前
        1
  •  4
  •   Vivian River    16 年前

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

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

    当你 GridView 触发一个事件,您的 Page_Load 方法执行和 然后 处理 GRIDVIEW 事件执行。我仍然不能相信我的眼睛,但似乎即使您手动分配 GRIDVIEW 数据源到文本框,当 GridView.DataBind 方法执行。

    简而言之, 如果你的代码和我的一样,你有这两行代码在你的 页负荷 方法:

    myGridView.datasource=someDataSet;
    mygridView.databind();

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

    如果(!)背靠背
    {
    myGridView.datasource=someDataSet;
    mygridView.databind();
    }

    顺便说一下,我在vb.net上工作,所以请告诉我,我为您正确地转换了C。我也想听你这么说!

        2
  •  0
  •   Matthew Jones    16 年前

    你想在哪里访问这些值?如果您在 RowUpdated 函数,值将为空。在 RowUpdating ,并确保取消更新。

    推荐文章