【问题标题】:ASP.Net gridview AutoGenerateColumns="true" style & format textboxes in row when editingASP.Net gridview AutoGenerateColumns="true" 编辑时行中的样式和格式文本框
【发布时间】:2017-07-24 15:52:49
【问题描述】:

使用带有AutoGenerateColumns="true" 的GridView 时,似乎没有很多信息。

在我的场景中,我尝试使用它,因为我的 GridView 正在从存储过程中动态提取数值。如您所见,可能有 x 层。

查看数据时,我的一切看起来都很棒:

仅查看:

但是,一旦我将该行置于编辑模式,事情就会变成这样:

编辑模式:

我需要在这里做两件事:

  1. 使文本框的宽度变小
  2. 格式化数字以删除小数

我研究了循环遍历 GridView 行、DataControlFieldDataControlFieldCell 内的所有控件,但我已经很困惑,需要大家帮忙。

我的代码在 C# 中。

编辑:

好的,为了更清楚,我正在尝试单击编辑(M 按钮)以将该行置于编辑模式。从这里开始,我想遍历行中的所有控件,然后设置 TextBox 宽度。这些方面的东西(这不是工作代码,而只是我在乱搞):

protected void gvFeeTable_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvFeeTable.EditIndex = e.NewEditIndex;
        BindFeeTableGrid(9);

        //foreach (DataControlField field in gvFeeTable.Columns)
        //{
        //    field.ControlStyle.Width = 25;
        //}

        foreach (Control c in gvFeeTable.Rows[gvFeeTable.EditIndex].Controls)
        {
            //if (c is TextBox)
            //{
            //    TextBox tb = c as TextBox;

            //    tb.Width = 25;
            //}

            string test = c.GetType().ToString();

            if (c.GetType() == typeof(DataControlFieldCell))
            {                    

                foreach (TextBox tb in c.Controls)
                {
                    tb.Width = 50;
                }
            }
        }
    }

【问题讨论】:

  • 显示你的 c# 代码
  • 我没有任何代码 - 我被困在如何实现我想要完成的目标上:1. 使文本框更小宽度 2. 格式化数字以删除小数
  • 至少需要看到呈现的 html。如果您无法更改代码,CSS 是唯一的选择。如果您只有屏幕截图,则无法提供太多帮助
  • 关于小数,您希望输入四舍五入还是截断。还是希望用户只输入整数值?
  • 对于小数,我想镜像我在 RowDataBound 部分中的代码:“e.Row.Cells[i].Text = Convert.ToDecimal(val).ToString("0. ##");"

标签: c# gridview autogeneratecolumn


【解决方案1】:

例如,我想在 c# 代码中设置第 3 列的宽度:您可以对所有其他列执行此操作。

GridView1.Columns[2].ItemStyle.Width = 20;

并且,要删除小数,请在数据库中使用 integer 数据类型;

【讨论】:

    【解决方案2】:

    只是想发布我设置文本框大小的解决方案......并添加我的代码以完成格式化:

        protected void gvFeeTable_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gvFeeTable.EditIndex = e.NewEditIndex;
            BindFeeTableGrid(9);
    
            foreach (Control c in gvFeeTable.Rows[gvFeeTable.EditIndex].Controls)
            {
                if (c.GetType() == typeof(DataControlFieldCell))
                {
                    foreach (Control control in c.Controls)
                    {
                        TextBox tb = control as TextBox;
    
                        if (tb != null)
                        {
                            tb.Width = 50;
    
                            double dbl;
                            bool isNumeric = double.TryParse(tb.Text, out dbl);
    
                            if (isNumeric == true)
                            {
                                tb.Text = Convert.ToDecimal(tb.Text).ToString("0.00");
                            }
                        }
                    }
                }
            }
        }
    

    Textboxes resized

    Textboxes formatted

    【讨论】:

      【解决方案3】:

      #gvSomeGridView1 .inpA{ width: 20px;}
      #gvSomeGridView1 .inpB{ width: 40px;}
      #gvSomeGridView1 .inpC{ width: 80px;}
      
      #gvSomeGridView2 td:nth-child(1) input{ width: 30px;}
      #gvSomeGridView2 td:nth-child(2) input{ width: 60px;}
      #gvSomeGridView2 td:nth-child(3) input{ width: 120px;}
      
      #gvSomeGridView3 td > input { width:50px}
      <div>
        <table id="gvSomeGridView1">
          <tbody>
            <tr>
              <td><input id="input1" type="text" class="inpA" /></td>
              <td><input id="input2" type="text" class="inpB" /></td>
              <td><input id="input3" type="text" class="inpC" /></td>
            </tr>
          </tbody>
        </table>
      </div>
      
      <div>
        <table id="gvSomeGridView2">
          <tbody>
            <tr>
              <td><input id="input1" type="text"/></td>
              <td><input id="input2" type="text"/></td>
              <td><input id="input3" type="text"/></td>
            </tr>
          </tbody>
        </table>
      </div>
      
      <div>
        <table id="gvSomeGridView3">
          <tbody>
            <tr>
              <td><input type="text"/></td>
              <td><input type="text"/></td>
              <td><input type="text"/></td>
            </tr>
          </tbody>
        </table>
      </div>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 2018-04-29
        • 1970-01-01
        • 1970-01-01
        • 2011-11-25
        • 2012-07-18
        相关资源
        最近更新 更多