在下面的例子中,我用一些數據填充gridview。一切都很好,但我不知道如何設置列寬。 gridview沒有任何設置列,所以我不能使用ItemStyle-Width
。我嘗試使用GridViewClicks_RowDataBound
,但e.Row.Cells[i].Width
不起作用,即使e.Row.Cells[i].Height
確實有效。設置gridview列的寬度?
我也嘗試在page_load
中設置column.ItemStyle.Width
,但也不起作用。
基本上,我需要設置gridview的列寬而不在標記中添加列。
任何幫助表示讚賞。
謝謝。
這裏的標記:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.GridDock
{
overflow-x: auto;
width: calc(100% - 480px);
padding: 0 0 17px 0;
}
</style>
<script type="text/javascript">
$('#dvGridWidth').width($('#dvScreenWidth').width());
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div style="width: 300px; height: 300px; display:inline-block; vertical-align:top">
<asp:Button ID="Button1" runat="server" Width="278px" Text="Button" />
</div>
<div style="width: 160px; height: 160px; display:inline-block;vertical-align:top">
<asp:Button ID="Button2" runat="server" Width="140px" Text="Button" />
</div>
<div style="display:inline-block;" class="GridDock" id="dvGridWidth">
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridViewClicks_RowDataBound">
</asp:GridView>
</div>
</div>
</form>
</body>
</html>
而隱藏代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace ToErase
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataTable gridDataDataTable = new DataTable();
gridDataDataTable.Columns.Add("ID");
gridDataDataTable.Columns.Add("Name");
gridDataDataTable.Columns.Add("Address1");
gridDataDataTable.Columns.Add("Address2");
gridDataDataTable.Columns.Add("Address3");
gridDataDataTable.Columns.Add("City");
gridDataDataTable.Columns.Add("Zip");
gridDataDataTable.Columns.Add("Province");
gridDataDataTable.Columns.Add("Country");
gridDataDataTable.Columns.Add("Sex");
gridDataDataTable.Columns.Add("SNo");
gridDataDataTable.Columns.Add("TelNo");
gridDataDataTable.Columns.Add("FaxNo");
gridDataDataTable.Columns.Add("MobileNo");
gridDataDataTable.Columns.Add("VehicleNo");
gridDataDataTable.Columns.Add("Color");
gridDataDataTable.Columns.Add("Height");
gridDataDataTable.Columns.Add("Weight");
gridDataDataTable.Columns.Add("Company");
gridDataDataTable.Columns.Add("CompanyAddress");
gridDataDataTable.Columns.Add("CompanyTelNo");
gridDataDataTable.Columns.Add("CompanyFaxNo");
gridDataDataTable.Rows.Add("1", "Ryan", "City Stree1", "City Stree2", "City Stree1", "Barcelona", "232232", "N/A", "Spain", "Male", "S23343", "2223-232323-22", "2223-232323-22", "2223-232323-22", "2223-232323-22", "Red", "80cm", "75kg", "Lockheed Martin", "City Street3", "800-536145", "800-142587");
gridDataDataTable.Rows.Add("2", "Ryan", "City Stree1", "City Stree2", "City Stree1", "Barcelona", "232232", "N/A", "Spain", "Male", "S23343", "2223-232323-22", "2223-232323-22", "2223-232323-22", "2223-232323-22", "Red", "80cm", "75kg", "Lockheed Martin", "City Street3", "800-536145", "800-142587");
gridDataDataTable.Rows.Add("3", "Ryan", "City Stree1", "City Stree2", "City Stree1", "Barcelona", "232232", "N/A", "Spain", "Male", "S23343", "2223-232323-22", "2223-232323-22", "2223-232323-22", "2223-232323-22", "Red", "80cm", "75kg", "Lockheed Martin", "City Street3", "800-536145", "800-142587");
GridView1.DataSource = gridDataDataTable;
GridView1.DataBind();
/* The following code does not affect grid columns */
foreach (DataControlField column in GridView1.Columns)
{
column.ItemStyle.Width = Unit.Pixel(400);
}
}
protected void GridViewClicks_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drv = e.Row.DataItem as DataRowView;
for (int i = 0; i < drv.Row.ItemArray.Length; i++)
{
e.Row.Cells[i].Width = 200; // The width is not being set to 200px
e.Row.Cells[i].Height = 200; // This works, I can set the height
}
}
}
}
}
可能是重複的,看看這個:http://stackoverflow.com/a/2740947/5418068 – PJS
它不是重複的。這正是我以前測試過的代碼無效的代碼。我在我的問題中提到了這一點,幷包含了完全相同問題中的代碼。 – rbhat