FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 8551|回复: 8
打印 上一主题 下一主题

row.FindControl 在button中 获取不到textbox值

[复制链接]
跳转到指定楼层
楼主
发表于 2012-6-28 12:11:54 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
protected void Button1_Click(object sender, EventArgs e)
        {
            for (int i = 0, count = Grid1.Rows.Count; i < count; i++)
            {
                GridRow row = Grid1.Rows[i];
                System.Web.UI.WebControls.DropDownList ddlGender = (System.Web.UI.WebControls.DropDownList)row.FindControl("ddlGender");
                System.Web.UI.WebControls.TextBox tbxGroupName = (System.Web.UI.WebControls.TextBox)row.FindControl("tbxGroupName");
                tbxGroupName.Text = (Convert.ToInt32(tbxGroupName.Text) + 1).ToString();
            }
            // 如果不是重新绑定数据,则需要手工调用UpdateTemplateFields来更新所有TemplateField中的值
            Grid1.UpdateTemplateFields();
        }

沙发
 楼主| 发表于 2012-6-29 02:14:05 | 显示全部楼层
假如有两列
<ext:TemplateField ColumnID="zh1"  Width="100px">
                                <ItemTemplate>
                                     <asp:TextBox ID="tbxZh1" runat="server" Width="80px" Text='<%# Eval("zh") %>'  ></asp:TextBox>                                
                                </ItemTemplate>
                            </ext:TemplateField>
                                                    <ext:TemplateField ColumnID="zcb1" HeaderText="总成本" Width="100px">
                                <ItemTemplate>
                                      <asp:TextBox ID="tbxZcb" runat="server" Width="80px" Text='<%# Eval("zcb") %>'  ></asp:TextBox>
                                </ItemTemplate>
                            </ext:TemplateField>

显示的时候
  我只显示System.Web.UI.WebControls.TextBox tbxGroupName = (System.Web.UI.WebControls.TextBox)row.FindControl("tbxZcb");
程序会把 FindControl("tbxZh1");的值也读出来
板凳
 楼主| 发表于 2012-6-29 03:12:00 | 显示全部楼层
另外:
我找到了出错位置,是因为 FindControl("tbxZh1");后 值在最后一行一下读出,而不是一个一个读出的 请问是什么原因了?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
地板
 楼主| 发表于 2012-6-29 03:13:07 | 显示全部楼层
代码如下: <ext:Grid ID="Grid1" ShowBorder="true" ShowHeader="true" Title="表格" Width="800px"
        runat="server" DataKeyNames="Id,xmmc">

                       <Columns>
           
            <ext:BoundField Width="100px" DataField="xmmc" DataFormatString="{0}" HeaderText="名称" />
           
            <ext:BoundField Width="60px" DataField="jldw" HeaderText="单位" />
         
           
            <ext:TemplateField HeaderText="分组" Width="100px">
                <ItemTemplate>
                    <asp:TextBox ID="tbxZcb" runat="server" Width="80px" TabIndex='<%# Container.DataItemIndex + 10 %>'
                        Text='<%# Eval("zcb") %>'></asp:TextBox>
                </ItemTemplate>
            </ext:TemplateField>
        </Columns>

                </ext:Grid>

    <ext:Button runat="server" ID="Button1" OnClick="Button1_Click" Text="获取用户输入的分组值">
    </ext:Button>
    <br />
    <extabel ID="labResult" EncodeText="false" runat="server">
    </extabel>
    <br />
    </form>
    <script type="text/javascript">
        var gridClientID = '<%= Grid1.ClientID %>';

        function registerSelectEvent() {
            var grid = X(gridClientID);
            grid.el.select('.x-grid-tpl input').on('click', function (evt, el) {
                el.select();
            });
        }

        function onReady() {
            var grid = X(gridClientID);

            grid.on('viewready', function () {
                registerSelectEvent();
            });
        }

        function onAjaxReady() {
            registerSelectEvent();
        }
    </script>
  StringBuilder sb = new StringBuilder();
            sb.Append("<table style=\"width:350px;\"><tr><th>编号</th><th>姓名</th><th>用户输入的分组号</th></tr>");
            for (int i = 0, count = Grid1.Rows.Count; i < count; i++)
            {
                sb.Append("<tr>");
                object[] rowDataKeys = Grid1.DataKeys[i];
                sb.AppendFormat("<td>{0}</td>", rowDataKeys[0]);
                sb.AppendFormat("<td>{0}</td>", rowDataKeys[1]);

                GridRow row = Grid1.Rows[i];
                System.Web.UI.WebControls.TextBox tbxGroupName = (System.Web.UI.WebControls.TextBox)row.FindControl("tbxZcb");
                sb.AppendFormat("<td>{0}</td>", tbxGroupName.Text);

                sb.Append("<tr>");
            }

            sb.Append("</table>");

            labResult.Text = sb.ToString();
        }
5#
 楼主| 发表于 2012-6-29 03:27:31 | 显示全部楼层
sanshi 发表于 2012-6-28 12:34
这个地方没问题,参考示例:http://demo.extasp.net/#/grid/grid_edit.aspx

首先看看设置正确不:http://b ...

假如有两列
<ext:TemplateField ColumnID="zh1"  Width="100px">
                                <ItemTemplate>
                                     <asp:TextBox ID="tbxZh1" runat="server" Width="80px" Text='<%# Eval("zh") %>'  ></asp:TextBox>                                
                                </ItemTemplate>
                            </ext:TemplateField>
                                                    <ext:TemplateField ColumnID="zcb1" HeaderText="总成本" Width="100px">
                                <ItemTemplate>
                                      <asp:TextBox ID="tbxZcb" runat="server" Width="80px" Text='<%# Eval("zcb") %>'  ></asp:TextBox>
                                </ItemTemplate>
                            </ext:TemplateField>

显示的时候
  我只显示System.Web.UI.WebControls.TextBox tbxGroupName = (System.Web.UI.WebControls.TextBox)row.FindControl("tbxZcb");
程序会把 FindControl("tbxZh1");的值也读出来
6#
 楼主| 发表于 2012-6-29 06:27:57 | 显示全部楼层
sanshi 发表于 2012-6-29 03:37
示例和你的程序类似,如果示例没问题的话,还是要仔细检查下配置,以及JSOn.NET的版本 ...

终于解决了 重新配置了下webconfig
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-1 07:34 , Processed in 0.047809 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表