我現在動態綁定DataGrid,
代碼如下;
Private Sub DataGridBind(Optional ByVal PageIndex As Int32 = 0)
Me.dataGrid1.Columns.Add(CreateBoundColumn(arrlistSelectedColumns(i).Value, arrlistSelectedColumns(i).Text))
end subFunction CreateBoundColumn(ByVal DataFieldValue As String, ByVal HeaderTextValue As String) As BoundColumn
Dim column As BoundColumn = New BoundColumn
column.DataField = DataFieldValue
column.HeaderText = HeaderTextValue
Return column
End Function
但是我不知道有什麼辦法才能是動態生成的列大小固定,也就是說列寬不隨數據的長度的改變而改變,幫幫我吧
代碼如下;
Private Sub DataGridBind(Optional ByVal PageIndex As Int32 = 0)
Me.dataGrid1.Columns.Add(CreateBoundColumn(arrlistSelectedColumns(i).Value, arrlistSelectedColumns(i).Text))
end subFunction CreateBoundColumn(ByVal DataFieldValue As String, ByVal HeaderTextValue As String) As BoundColumn
Dim column As BoundColumn = New BoundColumn
column.DataField = DataFieldValue
column.HeaderText = HeaderTextValue
Return column
End Function
但是我不知道有什麼辦法才能是動態生成的列大小固定,也就是說列寬不隨數據的長度的改變而改變,幫幫我吧
Dim column As BoundColumn = New BoundColumn
column.DataField = DataFieldValue
column.HeaderText = HeaderTextValue
column.HeaderStyle.Width = 100
Return column
End Function
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
int start_index;
ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr; dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
for (int i = start_index; i < start_index + ItemsGrid.PageSize; i++)
{
dr = dt.NewRow(); dr[0] = i;
dr[1] = "我是中文我是中文我.2354561531f1a sdf 3sd153 ds1g3 1sd是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文sdfdsfdsfsd我是中文我是中文我是中文";
dr[2] = 1.23 * (i+1); dt.Rows.Add(dr);
} DataView dv = new DataView(dt);
return dv;
} void Page_Load(Object sender, EventArgs e)
{
ItemsGrid.Attributes.Add("style","word-break:keep-all;word-wrap:normal");
if (!IsPostBack)
{
BindGrid();
}
} void BindGrid()
{
ItemsGrid.DataSource=CreateDataSource();
ItemsGrid.DataBind();
}
void Item_Created(Object sender, DataGridItemEventArgs e)
{
if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
e.Item.Cells[1].Text = "<nobr>" + e.Item.Cells[1].Text + "</nobr>";
} </script>
<body>
<form runat="server">
<asp:DataGrid id="ItemsGrid" runat="server"
BorderColor="black"
OnItemDataBound="Item_Created"
AutoGenerateColumns="false"> <PagerStyle NextPageText="Forward"
PrevPageText="Back"
Position="Bottom"
PageButtonCount="5"
BackColor="#00aaaa">
</PagerStyle> <AlternatingItemStyle BackColor="yellow">
</AlternatingItemStyle> <HeaderStyle BackColor="#00aaaa">
</HeaderStyle> <Columns>
<asp:BoundColumn HeaderText="Number"
DataField="IntegerValue"/> <asp:BoundColumn
HeaderText="Item"
DataField="StringValue"/> <asp:BoundColumn
HeaderText="Price"
DataField="CurrencyValue"
DataFormatString="{0:c}"> <ItemStyle HorizontalAlign="right">
</ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.MappingName = "News";
dGridNews.TableStyles.Add(dgts);
DataGridTableStyle tableStyle = dGridNews.TableStyles["News"];
tableStyle.GridColumnStyles[1].Width =300;web form:
width = 25%
7.DataGrid需要动态帮定不同的列,如何控制他的列宽?----if(e.Item.ItemType==ListItemType.Header)
for(int i=0,j=e.Item.Cells.Count;i<j;i++){
e.Item.Cells[i].Width=System.Web.UI.WebControls.Unit.Pixel(20);
} --- DataGrid1.Columns(9).HeaderStyle.Width = Unit.Pixel(100)
=========================
以上的方法 都是在你的表格中的内容不会超出表格宽度的情况下起作用 ,因为如果你输了很多sssssss会把你的表格称大 ,所以你可以通过强行换行实现 ,如果你设表格宽度为10 肯定不够。
楼主试了没有
以上的方法 都是在你的表格中的内容不会超出表格宽度的情况下起作用 ,因为如果你输了很多sssssss会把你的表格称大 ,所以你可以通过强行换行实现 ,如果你设表格宽度为10 肯定不够。