【问题标题】:reading values from textboxes in Gridview从 Gridview 中的文本框中读取值
【发布时间】:2014-05-16 00:14:53
【问题描述】:

我想在 ASP.NET 中为我的项目读取整个 gridview 的值。 我已经尝试和搜索了很长一段时间,但还没有找到我想要的东西。

这是我在 aspx 页面中的 gridview:

<asp:GridView ID="GridViewNatuur" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField DataField="Naam" HeaderText="Mana" />
                    <asp:TemplateField HeaderText="Aantal">
                        <ItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server" TextMode="Number" AutoPostBack="False" MaxLength="100" Text="0"></asp:TextBox>
                                                    </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>

页面加载时,它会获取 6 行的值。对于这些行中的每一行,将创建一个文本框。但是,所有这些文本框都将具有相同的 ID,这很糟糕。我怎样才能防止这种情况?或者,如何读取每一行的文本框值?

BLNatuur blnatuur = new BLNatuur();
        List<Natuur> naturen = blnatuur.GetNaturen();
        BLManaCost blmanacost = new BLManaCost();
        int i = 0;
        int aantal;

        foreach (GridViewRow gridRow in GridViewNatuur.Rows)
        {
            ManaCost manaCost = new ManaCost();
            manaCost.KaartId = kaartInsertId;
            manaCost.TypeId = naturen[i].ID;
            string opgehaaldAantal = ((TextBox)GridViewNatuur.Rows[gridRow.RowIndex].Cells[1].FindControl("TextBox1")).Text;
            bool correct = Int32.TryParse(opgehaaldAantal, out aantal);
            if (!correct)
            {
                aantal = 0;
            }
            manaCost.Aantal = aantal;
            i++;
            blmanacost.InsertManaCost(manaCost);
        }

在我粘贴在这里的代码中,我想要正确获取字符串 opgehaaldAantal 部分的变量。

请注意,我目前还没有 ASP.NET 方面的经验。

【问题讨论】:

标签: asp.net gridview textbox


【解决方案1】:

只是改变

 string opgehaaldAantal = ((TextBox)GridViewNatuur.Rows[gridRow.RowIndex].Cells[1].FindControl("TextBox1")).Text;

 string opgehaaldAantal = ((TextBox)gridRow .FindControl("TextBox1")).Text;

【讨论】:

    【解决方案2】:

    要获取所有文本框的值,请创建一个 OnRowDataBound 事件,该事件在创建每个 TextBox 时读取它,并将 Text 值添加到 List 或类似集合中。

    【讨论】:

      【解决方案3】:

      我解决了这个问题。 首先,我遇到了当数字文本框仍然是数字时我无法读取它的值的问题。所以我将它转换为后端的 SingleLine 文本框。

      我还发现 TextBox 控件位于单元格控件数组的第二个位置。 (第一个是细胞本身)。所以我必须阅读那个数组点才能得到 TextBox。

      BLNatuur blnatuur = new BLNatuur();
              List<Natuur> naturen = blnatuur.GetNaturen();
              BLManaCost blmanacost = new BLManaCost();
              int i = 0;
              int aantal;
      
              foreach (GridViewRow gridRow in GridViewNatuur.Rows)
              {
                  ManaCost manaCost = new ManaCost();
                  manaCost.KaartId = kaartInsertId;
                  manaCost.TypeId = naturen[i].ID;
      
                  TextBox textbox = (TextBox)gridRow.Cells[1].Controls[1];
                  textbox.TextMode = TextBoxMode.SingleLine;
                  String opgehaaldAantal = textbox.Text;
      
                  bool correct = Int32.TryParse(opgehaaldAantal, out aantal);
                  if (!correct)
                  {
                      aantal = 0;
                  }
                  manaCost.Aantal = aantal;
                  i++;
                  blmanacost.InsertManaCost(manaCost);  
              }
      

      我要感谢那些调查它并帮助我找出问题的人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 2011-12-02
        • 1970-01-01
        相关资源
        最近更新 更多