列在非编辑状态的时候可以控制asp:Label的Width属性来控制列的宽度, 一旦编辑的时候,列宽度就改变了;
编辑的时候, 控制asp:TextBox的width属性只是控制编辑框的宽度, 并没有控制列的宽度;
修改headerStyle的width属性即不能控制非编辑状态的列宽度, 也不能控制编辑状态的列宽度, 这个就是在DataGrid属性编辑器里格式->列里设置里设置得到的代码
请问怎样才可以独立控制编辑状态和非编辑状态下的每列宽度呢?
<asp:DataGrid id="MyDataGrid" Runat="server" Width="800px" BackColor="#FFFDEC" BorderColor="#9999FF"
CellPadding="3" Font-Size="8pt" HeaderStyle-BackColor="#CCFFFF" OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update" OnDeleteCommand="MyDataGrid_Delete"
AutoGenerateColumns="False">
<HeaderStyle BackColor="#CCFFFF"></HeaderStyle>
<EditItemStyle Width="30px"></EditItemStyle>
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="确认" CancelText="取消" EditText="修改">
<ItemStyle Wrap="False"></ItemStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" CommandName="Delete">
<HeaderStyle Width="152px"></HeaderStyle> <%-- 这样不行, 完全看不到效果--%>
</asp:ButtonColumn>
<asp:TemplateColumn HeaderText="项目编号">
<HeaderStyle HorizontalAlign="Center" Width="311px"></HeaderStyle><%-- 也一样, 完全看不到效果--%>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号") %>' ID="lbl_PrjNum" Width="80"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat="server" ID="tbx_PrjNum" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号")%>'/>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
请问怎样才可以独立控制编辑状态和非编辑状态下的每列宽度呢?
33 个解决方案
#1
试下这样可以吗
属性生成器--格式--列--选择要控制宽度的列--在右边调整宽度
属性生成器--格式--列--选择要控制宽度的列--在右边调整宽度
#2
楼上的方法没有效果, 原贴中已经说了.
#3
编辑状态的的text太大了,怎么控制? 调整宽度不行,我用的百份比
#4
用模板列是对的,但是对于宽度的控制尽量使用css
比如
================================
css:
.CItem
{
width: 36px;
}
---------------------------------
<asp:TemplateColumn HeaderText="项目编号">
<HeaderStyle HorizontalAlign="Center" cssclass="citem" ></HeaderStyle><%-- 也一样, 完全看不到效果--%>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号") %>' ID="lbl_PrjNum" cssclass="citem">
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat="server" ID="tbx_PrjNum" cssclass="citem" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号")%>'/>
</EditItemTemplate>
</asp:TemplateColumn>
=================================
比如
================================
css:
.CItem
{
width: 36px;
}
---------------------------------
<asp:TemplateColumn HeaderText="项目编号">
<HeaderStyle HorizontalAlign="Center" cssclass="citem" ></HeaderStyle><%-- 也一样, 完全看不到效果--%>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号") %>' ID="lbl_PrjNum" cssclass="citem">
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat="server" ID="tbx_PrjNum" cssclass="citem" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号")%>'/>
</EditItemTemplate>
</asp:TemplateColumn>
=================================
#5
方法有两种是,我记得的
1.直接在.cs里写上 e.Item.Cells[列].Width = System.Web.UI.WebControls.Unit.Pixel(大小);
或者e.Item.Cells[列].Attributs.Add()方式
2.在*.aspx页面上写列的宽度
1.直接在.cs里写上 e.Item.Cells[列].Width = System.Web.UI.WebControls.Unit.Pixel(大小);
或者e.Item.Cells[列].Attributs.Add()方式
2.在*.aspx页面上写列的宽度
#6
在DataGrid1_ItemDataBound事件中写以下代码:
if(e.Item.ItemType == ListItemType.EditItem)
{
if(e.Item.Controls[1].Controls[0].GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox tb = (TextBox)e.Item.Controls[1].Controls[0];
tb.Width = Unit.Parse("1.8cm");
tb.CssClass = "textbox";
tb.Text = Server.HtmlDecode(tb.Text);
}
Controls[1]为第一列;
1.8cm单位可以为px等.
if(e.Item.ItemType == ListItemType.EditItem)
{
if(e.Item.Controls[1].Controls[0].GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox tb = (TextBox)e.Item.Controls[1].Controls[0];
tb.Width = Unit.Parse("1.8cm");
tb.CssClass = "textbox";
tb.Text = Server.HtmlDecode(tb.Text);
}
Controls[1]为第一列;
1.8cm单位可以为px等.
#7
属性里可以控制的
#8
楼上的方法是否只能控制textbox的大小? 不能同时控制列的大小?
我现在是编辑的时候列太宽了, 如果只是缩小textbox不同时缩小列, 还是不好看.
我现在是编辑的时候列太宽了, 如果只是缩小textbox不同时缩小列, 还是不好看.
#9
private void dgMain_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.EditItem)
{
for (int i =0; i < e.Item.Cells.Count; i++)
{
if (e.Item.Cells[i].Controls.Count > 0)
{
try
{
TextBox cur = (TextBox)e.Item.Cells[i].Controls[0];
cur.Width = 30;
}
catch
{
}
}
}
}
}
这段代码希望大家学习,很实用的好东东。
{
if (e.Item.ItemType == ListItemType.EditItem)
{
for (int i =0; i < e.Item.Cells.Count; i++)
{
if (e.Item.Cells[i].Controls.Count > 0)
{
try
{
TextBox cur = (TextBox)e.Item.Cells[i].Controls[0];
cur.Width = 30;
}
catch
{
}
}
}
}
}
这段代码希望大家学习,很实用的好东东。
#10
楼上的代码只能控制TextBox的宽度. 我想在改变Textbox的宽度后, 改变DataGrid对应列的宽度应该如何设置? 我现在是编辑的时候列太宽了, 如果只是缩小textbox不同时缩小列, 还是不好看.
#11
TextBox的width可以改变列的宽度
#12
设置为百分比看看
#13
To: codeangel(-- 与人方便,自已方便 --)
刚才试了,只能改变Textbox的宽度, 变成一个很宽的列, 里面有个很小的TextBox
刚才试了,只能改变Textbox的宽度, 变成一个很宽的列, 里面有个很小的TextBox
#14
TextBox cur = (TextBox)e.Item.Cells[i].Controls[0];
cur.Width = 30;
然后再加:
e.Item.Cells[i].Width=30
cur.Width = 30;
然后再加:
e.Item.Cells[i].Width=30
#15
通常在ItemDataBound 事件里面设定
#16
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.EditItem)
//状态设定。非编辑为ListItemType.Item,ListItemType.AlternatingItem:
{
for(int i=0;i<e.Item.Cells.Count;i++)
{
if(e.Item.Cells[i].Controls.Count>0)
{
try
{
TextBox t=(TextBox)e.Item.Cells[i].Controls[0];//非编辑为Label
t.Width=50;//你要的宽度
}
catch(Exception ee)
{
n}
}
}
}
}
{
if(e.Item.ItemType==ListItemType.EditItem)
//状态设定。非编辑为ListItemType.Item,ListItemType.AlternatingItem:
{
for(int i=0;i<e.Item.Cells.Count;i++)
{
if(e.Item.Cells[i].Controls.Count>0)
{
try
{
TextBox t=(TextBox)e.Item.Cells[i].Controls[0];//非编辑为Label
t.Width=50;//你要的宽度
}
catch(Exception ee)
{
n}
}
}
}
}
#17
up
#18
楼上的代码只能控制TextBox的宽度. 我想在改变Textbox的宽度后, 改变DataGrid对应列的宽度应该如何设置? 我现在是编辑的时候列太宽了, 如果只是缩小textbox不同时缩小列, 还是不好看.
我给你的方法就可以,我就是这么用的,列的宽度自动会缩小的.你自己可以试试.
我给你的方法就可以,我就是这么用的,列的宽度自动会缩小的.你自己可以试试.
#19
<asp:datagrid id="DataGrid1" runat="server" AllowPaging="True" AutoGenerateColumns="False" PageSize="3"
ShowHeader="False" AllowSorting="True" Width="100%">
<EditItemStyle ForeColor="Aqua" Width ="10%"></EditItemStyle>
............
ShowHeader="False" AllowSorting="True" Width="100%">
<EditItemStyle ForeColor="Aqua" Width ="10%"></EditItemStyle>
............
#20
不要给datagrid设置width试试
#21
mark
#22
gz
#23
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"> <ItemStyle Width="10%"></ItemStyle> </asp:EditCommandColumn>
这样试过没有?
这样试过没有?
#24
改用模板好控制
#25
如 LoveCher所说,不设置DataGrid的总体width属性就可以按照hfzsjz等人的方法来解决问题, 很感谢大家的热心帮忙, 还有点小问题, 解决完就揭帖
#26
用模板的方式最合适了
#27
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑">
<ItemStyle Wrap="False"></ItemStyle>
</asp:EditCommandColumn>
用这个,让列宽自动扩充,即不允许在列中换行
<ItemStyle Wrap="False"></ItemStyle>
</asp:EditCommandColumn>
用这个,让列宽自动扩充,即不允许在列中换行
#28
忘了一点就是DataGrid的宽度和高度都不要设,这样DataGrid就可以根据数据的长度、多少来伸缩了。
#29
在Datagrid中修改数据,当点击编辑键时,数据出现在文本框中,怎么控制文本框的大小 ?
private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e)
{
for(int i=0;i<e.Item.Cells.Count-1;i++)
if(e.Item.ItemType==ListItemType.EditType)
{
e.Item.Cells[i].Attributes.Add("Width", "80px")
}
}
你可以参考下
private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e)
{
for(int i=0;i<e.Item.Cells.Count-1;i++)
if(e.Item.ItemType==ListItemType.EditType)
{
e.Item.Cells[i].Attributes.Add("Width", "80px")
}
}
你可以参考下
#30
eform自定义表单平台是一个在IE浏览器中可视化的设计软件界面的工具。无论是输入界面还是报表界面,无论是简单的输入查询还是复杂的逻辑处理。都可以由eform设计出来。
eform自定义表单平台适用于网上OA系统的自定义表单模块,工作流系统的自定义表单模块,信息管理系统方面的软件开发项目等等。
方成eform自定义表单平台,纯BS结构.100%开放源码.可以在 http://218.30.103.110:8080/eform/index.html 在线试用.
eform自定义表单平台适用于网上OA系统的自定义表单模块,工作流系统的自定义表单模块,信息管理系统方面的软件开发项目等等。
方成eform自定义表单平台,纯BS结构.100%开放源码.可以在 http://218.30.103.110:8080/eform/index.html 在线试用.
#31
有两种方法:
一、用模板列(推荐),示例如下:
<asp:TemplateColumn HeaderText="部门或职务">
<ItemStyle Width="28%"></ItemStyle>
<ItemTemplate>
<asp:Label id="Label3" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.department") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="Textbox3" CssClass="editalign" runat="server" Width="100%" Text='<%# DataBinder.Eval(Container, "DataItem.department") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
第二种方法,用一个过程来设置,并在datagrid绑定完成后执行它:
Sub SetEditBox(ByVal EditIndex As Integer) '设置编辑状态下的每个文本框的宽度
If EditIndex = -1 Then Exit Sub
Dim dcell As New TableCell
For Each dcell In Datagrid1.Items(EditIndex).Cells
If dcell.HasControls Then
If dcell.Controls(0).GetType Is GetType(TextBox) Then
Dim cellIndex As Integer = Datagrid1.Items(EditIndex).Cells.GetCellIndex(dcell)
CType(dcell.Controls(0), TextBox).Width = Datagrid1.Columns(cellIndex).ItemStyle.Width
End If
End If
Next dcell
End Sub
两种方法都很完美!
一、用模板列(推荐),示例如下:
<asp:TemplateColumn HeaderText="部门或职务">
<ItemStyle Width="28%"></ItemStyle>
<ItemTemplate>
<asp:Label id="Label3" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.department") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="Textbox3" CssClass="editalign" runat="server" Width="100%" Text='<%# DataBinder.Eval(Container, "DataItem.department") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
第二种方法,用一个过程来设置,并在datagrid绑定完成后执行它:
Sub SetEditBox(ByVal EditIndex As Integer) '设置编辑状态下的每个文本框的宽度
If EditIndex = -1 Then Exit Sub
Dim dcell As New TableCell
For Each dcell In Datagrid1.Items(EditIndex).Cells
If dcell.HasControls Then
If dcell.Controls(0).GetType Is GetType(TextBox) Then
Dim cellIndex As Integer = Datagrid1.Items(EditIndex).Cells.GetCellIndex(dcell)
CType(dcell.Controls(0), TextBox).Width = Datagrid1.Columns(cellIndex).ItemStyle.Width
End If
End If
Next dcell
End Sub
两种方法都很完美!
#32
up
#33
昨天刚做到,给你看一下
----------------------------------------------------
//动态生成Textbox
for (int i=1;i<=4;i++)
{
TextBox txt = new TextBox();
txt.ID = "TextBox"+i.ToString();
txt.Text = e.Item.Cells[i].Text;
txt.Width=this.DataGrid1.Columns[i].HeaderStyle.Width;
txt.Height=16;
txt.CssClass="NoneBorderText";
txt.Attributes.Add("onblur","Update()");
txt.Font.Size=new FontUnit("9px");
e.Item.Cells[i].Controls.Add(txt);
}
----------------------------------------------------
//动态生成Textbox
for (int i=1;i<=4;i++)
{
TextBox txt = new TextBox();
txt.ID = "TextBox"+i.ToString();
txt.Text = e.Item.Cells[i].Text;
txt.Width=this.DataGrid1.Columns[i].HeaderStyle.Width;
txt.Height=16;
txt.CssClass="NoneBorderText";
txt.Attributes.Add("onblur","Update()");
txt.Font.Size=new FontUnit("9px");
e.Item.Cells[i].Controls.Add(txt);
}
#1
试下这样可以吗
属性生成器--格式--列--选择要控制宽度的列--在右边调整宽度
属性生成器--格式--列--选择要控制宽度的列--在右边调整宽度
#2
楼上的方法没有效果, 原贴中已经说了.
#3
编辑状态的的text太大了,怎么控制? 调整宽度不行,我用的百份比
#4
用模板列是对的,但是对于宽度的控制尽量使用css
比如
================================
css:
.CItem
{
width: 36px;
}
---------------------------------
<asp:TemplateColumn HeaderText="项目编号">
<HeaderStyle HorizontalAlign="Center" cssclass="citem" ></HeaderStyle><%-- 也一样, 完全看不到效果--%>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号") %>' ID="lbl_PrjNum" cssclass="citem">
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat="server" ID="tbx_PrjNum" cssclass="citem" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号")%>'/>
</EditItemTemplate>
</asp:TemplateColumn>
=================================
比如
================================
css:
.CItem
{
width: 36px;
}
---------------------------------
<asp:TemplateColumn HeaderText="项目编号">
<HeaderStyle HorizontalAlign="Center" cssclass="citem" ></HeaderStyle><%-- 也一样, 完全看不到效果--%>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号") %>' ID="lbl_PrjNum" cssclass="citem">
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat="server" ID="tbx_PrjNum" cssclass="citem" Text='<%# DataBinder.Eval(Container.DataItem, "项目编号")%>'/>
</EditItemTemplate>
</asp:TemplateColumn>
=================================
#5
方法有两种是,我记得的
1.直接在.cs里写上 e.Item.Cells[列].Width = System.Web.UI.WebControls.Unit.Pixel(大小);
或者e.Item.Cells[列].Attributs.Add()方式
2.在*.aspx页面上写列的宽度
1.直接在.cs里写上 e.Item.Cells[列].Width = System.Web.UI.WebControls.Unit.Pixel(大小);
或者e.Item.Cells[列].Attributs.Add()方式
2.在*.aspx页面上写列的宽度
#6
在DataGrid1_ItemDataBound事件中写以下代码:
if(e.Item.ItemType == ListItemType.EditItem)
{
if(e.Item.Controls[1].Controls[0].GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox tb = (TextBox)e.Item.Controls[1].Controls[0];
tb.Width = Unit.Parse("1.8cm");
tb.CssClass = "textbox";
tb.Text = Server.HtmlDecode(tb.Text);
}
Controls[1]为第一列;
1.8cm单位可以为px等.
if(e.Item.ItemType == ListItemType.EditItem)
{
if(e.Item.Controls[1].Controls[0].GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox tb = (TextBox)e.Item.Controls[1].Controls[0];
tb.Width = Unit.Parse("1.8cm");
tb.CssClass = "textbox";
tb.Text = Server.HtmlDecode(tb.Text);
}
Controls[1]为第一列;
1.8cm单位可以为px等.
#7
属性里可以控制的
#8
楼上的方法是否只能控制textbox的大小? 不能同时控制列的大小?
我现在是编辑的时候列太宽了, 如果只是缩小textbox不同时缩小列, 还是不好看.
我现在是编辑的时候列太宽了, 如果只是缩小textbox不同时缩小列, 还是不好看.
#9
private void dgMain_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.EditItem)
{
for (int i =0; i < e.Item.Cells.Count; i++)
{
if (e.Item.Cells[i].Controls.Count > 0)
{
try
{
TextBox cur = (TextBox)e.Item.Cells[i].Controls[0];
cur.Width = 30;
}
catch
{
}
}
}
}
}
这段代码希望大家学习,很实用的好东东。
{
if (e.Item.ItemType == ListItemType.EditItem)
{
for (int i =0; i < e.Item.Cells.Count; i++)
{
if (e.Item.Cells[i].Controls.Count > 0)
{
try
{
TextBox cur = (TextBox)e.Item.Cells[i].Controls[0];
cur.Width = 30;
}
catch
{
}
}
}
}
}
这段代码希望大家学习,很实用的好东东。
#10
楼上的代码只能控制TextBox的宽度. 我想在改变Textbox的宽度后, 改变DataGrid对应列的宽度应该如何设置? 我现在是编辑的时候列太宽了, 如果只是缩小textbox不同时缩小列, 还是不好看.
#11
TextBox的width可以改变列的宽度
#12
设置为百分比看看
#13
To: codeangel(-- 与人方便,自已方便 --)
刚才试了,只能改变Textbox的宽度, 变成一个很宽的列, 里面有个很小的TextBox
刚才试了,只能改变Textbox的宽度, 变成一个很宽的列, 里面有个很小的TextBox
#14
TextBox cur = (TextBox)e.Item.Cells[i].Controls[0];
cur.Width = 30;
然后再加:
e.Item.Cells[i].Width=30
cur.Width = 30;
然后再加:
e.Item.Cells[i].Width=30
#15
通常在ItemDataBound 事件里面设定
#16
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.EditItem)
//状态设定。非编辑为ListItemType.Item,ListItemType.AlternatingItem:
{
for(int i=0;i<e.Item.Cells.Count;i++)
{
if(e.Item.Cells[i].Controls.Count>0)
{
try
{
TextBox t=(TextBox)e.Item.Cells[i].Controls[0];//非编辑为Label
t.Width=50;//你要的宽度
}
catch(Exception ee)
{
n}
}
}
}
}
{
if(e.Item.ItemType==ListItemType.EditItem)
//状态设定。非编辑为ListItemType.Item,ListItemType.AlternatingItem:
{
for(int i=0;i<e.Item.Cells.Count;i++)
{
if(e.Item.Cells[i].Controls.Count>0)
{
try
{
TextBox t=(TextBox)e.Item.Cells[i].Controls[0];//非编辑为Label
t.Width=50;//你要的宽度
}
catch(Exception ee)
{
n}
}
}
}
}
#17
up
#18
楼上的代码只能控制TextBox的宽度. 我想在改变Textbox的宽度后, 改变DataGrid对应列的宽度应该如何设置? 我现在是编辑的时候列太宽了, 如果只是缩小textbox不同时缩小列, 还是不好看.
我给你的方法就可以,我就是这么用的,列的宽度自动会缩小的.你自己可以试试.
我给你的方法就可以,我就是这么用的,列的宽度自动会缩小的.你自己可以试试.
#19
<asp:datagrid id="DataGrid1" runat="server" AllowPaging="True" AutoGenerateColumns="False" PageSize="3"
ShowHeader="False" AllowSorting="True" Width="100%">
<EditItemStyle ForeColor="Aqua" Width ="10%"></EditItemStyle>
............
ShowHeader="False" AllowSorting="True" Width="100%">
<EditItemStyle ForeColor="Aqua" Width ="10%"></EditItemStyle>
............
#20
不要给datagrid设置width试试
#21
mark
#22
gz
#23
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"> <ItemStyle Width="10%"></ItemStyle> </asp:EditCommandColumn>
这样试过没有?
这样试过没有?
#24
改用模板好控制
#25
如 LoveCher所说,不设置DataGrid的总体width属性就可以按照hfzsjz等人的方法来解决问题, 很感谢大家的热心帮忙, 还有点小问题, 解决完就揭帖
#26
用模板的方式最合适了
#27
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑">
<ItemStyle Wrap="False"></ItemStyle>
</asp:EditCommandColumn>
用这个,让列宽自动扩充,即不允许在列中换行
<ItemStyle Wrap="False"></ItemStyle>
</asp:EditCommandColumn>
用这个,让列宽自动扩充,即不允许在列中换行
#28
忘了一点就是DataGrid的宽度和高度都不要设,这样DataGrid就可以根据数据的长度、多少来伸缩了。
#29
在Datagrid中修改数据,当点击编辑键时,数据出现在文本框中,怎么控制文本框的大小 ?
private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e)
{
for(int i=0;i<e.Item.Cells.Count-1;i++)
if(e.Item.ItemType==ListItemType.EditType)
{
e.Item.Cells[i].Attributes.Add("Width", "80px")
}
}
你可以参考下
private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e)
{
for(int i=0;i<e.Item.Cells.Count-1;i++)
if(e.Item.ItemType==ListItemType.EditType)
{
e.Item.Cells[i].Attributes.Add("Width", "80px")
}
}
你可以参考下
#30
eform自定义表单平台是一个在IE浏览器中可视化的设计软件界面的工具。无论是输入界面还是报表界面,无论是简单的输入查询还是复杂的逻辑处理。都可以由eform设计出来。
eform自定义表单平台适用于网上OA系统的自定义表单模块,工作流系统的自定义表单模块,信息管理系统方面的软件开发项目等等。
方成eform自定义表单平台,纯BS结构.100%开放源码.可以在 http://218.30.103.110:8080/eform/index.html 在线试用.
eform自定义表单平台适用于网上OA系统的自定义表单模块,工作流系统的自定义表单模块,信息管理系统方面的软件开发项目等等。
方成eform自定义表单平台,纯BS结构.100%开放源码.可以在 http://218.30.103.110:8080/eform/index.html 在线试用.
#31
有两种方法:
一、用模板列(推荐),示例如下:
<asp:TemplateColumn HeaderText="部门或职务">
<ItemStyle Width="28%"></ItemStyle>
<ItemTemplate>
<asp:Label id="Label3" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.department") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="Textbox3" CssClass="editalign" runat="server" Width="100%" Text='<%# DataBinder.Eval(Container, "DataItem.department") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
第二种方法,用一个过程来设置,并在datagrid绑定完成后执行它:
Sub SetEditBox(ByVal EditIndex As Integer) '设置编辑状态下的每个文本框的宽度
If EditIndex = -1 Then Exit Sub
Dim dcell As New TableCell
For Each dcell In Datagrid1.Items(EditIndex).Cells
If dcell.HasControls Then
If dcell.Controls(0).GetType Is GetType(TextBox) Then
Dim cellIndex As Integer = Datagrid1.Items(EditIndex).Cells.GetCellIndex(dcell)
CType(dcell.Controls(0), TextBox).Width = Datagrid1.Columns(cellIndex).ItemStyle.Width
End If
End If
Next dcell
End Sub
两种方法都很完美!
一、用模板列(推荐),示例如下:
<asp:TemplateColumn HeaderText="部门或职务">
<ItemStyle Width="28%"></ItemStyle>
<ItemTemplate>
<asp:Label id="Label3" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.department") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="Textbox3" CssClass="editalign" runat="server" Width="100%" Text='<%# DataBinder.Eval(Container, "DataItem.department") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
第二种方法,用一个过程来设置,并在datagrid绑定完成后执行它:
Sub SetEditBox(ByVal EditIndex As Integer) '设置编辑状态下的每个文本框的宽度
If EditIndex = -1 Then Exit Sub
Dim dcell As New TableCell
For Each dcell In Datagrid1.Items(EditIndex).Cells
If dcell.HasControls Then
If dcell.Controls(0).GetType Is GetType(TextBox) Then
Dim cellIndex As Integer = Datagrid1.Items(EditIndex).Cells.GetCellIndex(dcell)
CType(dcell.Controls(0), TextBox).Width = Datagrid1.Columns(cellIndex).ItemStyle.Width
End If
End If
Next dcell
End Sub
两种方法都很完美!
#32
up
#33
昨天刚做到,给你看一下
----------------------------------------------------
//动态生成Textbox
for (int i=1;i<=4;i++)
{
TextBox txt = new TextBox();
txt.ID = "TextBox"+i.ToString();
txt.Text = e.Item.Cells[i].Text;
txt.Width=this.DataGrid1.Columns[i].HeaderStyle.Width;
txt.Height=16;
txt.CssClass="NoneBorderText";
txt.Attributes.Add("onblur","Update()");
txt.Font.Size=new FontUnit("9px");
e.Item.Cells[i].Controls.Add(txt);
}
----------------------------------------------------
//动态生成Textbox
for (int i=1;i<=4;i++)
{
TextBox txt = new TextBox();
txt.ID = "TextBox"+i.ToString();
txt.Text = e.Item.Cells[i].Text;
txt.Width=this.DataGrid1.Columns[i].HeaderStyle.Width;
txt.Height=16;
txt.CssClass="NoneBorderText";
txt.Attributes.Add("onblur","Update()");
txt.Font.Size=new FontUnit("9px");
e.Item.Cells[i].Controls.Add(txt);
}