C# ASP.Net gridview自动生成列=";“真的”;风格与风格;编辑时格式化行中的文本框

C# ASP.Net gridview自动生成列=";“真的”;风格与风格;编辑时格式化行中的文本框,c#,gridview,autogeneratecolumn,C#,Gridview,Autogeneratecolumn,使用带有AutoGenerateColumns=“true”的GridView时,似乎没有太多信息 在我的场景中,我尝试使用它,因为我的GridView正在从存储过程中动态地提取数值。如您所见,可能有x个层 查看数据时,我觉得一切都很好: 仅查看: 但是,一旦我将该行置于编辑模式,情况如下: 编辑模式: 我需要做两件事: 使文本框的宽度变小 格式化数字以删除小数 我已经研究过GridView行中的所有控件的循环,在DataControlField中,在DataControlFieldCell

使用带有
AutoGenerateColumns=“true”
的GridView时,似乎没有太多信息

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

查看数据时,我觉得一切都很好:

仅查看:

但是,一旦我将该行置于编辑模式,情况如下:

编辑模式:

我需要做两件事:

  • 使文本框的宽度变小
  • 格式化数字以删除小数
  • 我已经研究过GridView行中的所有控件的循环,在
    DataControlField
    中,在
    DataControlFieldCell
    中,但我已经弄糊涂了,请求大家的帮助

    我的代码隐藏在C#中

    编辑:

    好的,为了更清楚,我尝试单击编辑(M按钮)将行置于编辑模式。从这里开始,我想循环遍历行中的所有控件,然后设置文本框的宽度。大致如下(这不是工作代码,只是我在胡闹):


    例如,我想在c代码中设置第3列的宽度:您可以为所有其他列设置宽度

    GridView1.Columns[2].ItemStyle.Width = 20;
    
    为了去除小数,在数据库中使用
    integer
    数据类型

    #gvSomeGridView1.inpA{width:20px;}
    #gvSomeGridView1.inpB{width:40px;}
    #gvSomeGridView1.inpC{width:80px;}
    #gvSomeGridView2 td:n子(1)输入{宽度:30px;}
    #gvSomeGridView2 td:n第n个子(2)输入{宽度:60px;}
    #gvSomeGridView2 td:n第n个子(3)输入{宽度:120px;}
    #gvSomeGridView3 td>输入{宽度:50px}

    只是想发布我的解决方案,用于设置文本框的大小…并添加我的代码以进行格式设置,以便完成:

        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");
                            }
                        }
                    }
                }
            }
        }
    


    展示你的代码我没有任何代码-我一直在思考如何实现我想要实现的目标:1。使文本框的宽度小于2。格式化数字以删除所需的小数,以至少查看呈现的html。如果您无法更改代码,CSS是唯一的选项。无法提供太多帮助如果你所有的都是截图,请查看小数,你希望输入是四舍五入还是截断。还是希望用户只输入整数值?对于小数,我希望镜像RowDataBound部分中的代码:“e.Row.Cells[I].Text=Convert.ToDecimal(val).ToString(“0.###”)
        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");
                            }
                        }
                    }
                }
            }
        }