使用带AutoGenerateColumns="true"
的GridView时似乎没有太多信息。
在我的场景中,我试图使用它,因为我的GridView动态地从存储过程中提取数值。如您所见,可能有x个层。
在查看数据时,我看起来很棒:
仅查看:
但是,一旦我将行置于编辑模式,事情会变成这样:
编辑模式:
我需要在这里做两件事:
我已经研究了DataControlField
内DataControlFieldCell
内的GridView行内的所有控件的循环,但是我已经非常困惑地请求每个人的帮助。
我的代码背后是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;
}
}
}
}
答案 0 :(得分:0)
例如,我想在c#代码中设置第3列的宽度:您可以为所有其他列执行此操作。
GridView1.Columns[2].ItemStyle.Width = 20;
并且,为了删除小数,请在数据库中使用integer
数据类型;
答案 1 :(得分:0)
#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>
&#13;
答案 2 :(得分: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");
}
}
}
}
}
}