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个层
查看数据时,我觉得一切都很好:
仅查看:
但是,一旦我将该行置于编辑模式,情况如下:
编辑模式:
我需要做两件事:
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");
}
}
}
}
}
}