这很有意思..
我希望在面板中有多个网格视图。并且gridview的数量不固定..
所以基本上我认为.aspx页面中应该没有代码,因为我必须在代码隐藏中创建gridview。
我在一个面板中有1个gridview的代码..我在HTML页面中定义了网格视图,并从后面的代码中填充它。
这是代码..可以任何1请帮我多个网格视图...
这是在.aspx页面上
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
AllowSorting="True" CellSpacing="2" onsorting="GridView1_Sorting"
Width="100%" ForeColor="White" GridLines="None"
ondatabound="GridView1_DataBound1">
<Columns>
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("PolicyID") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("PolicyID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这是背后的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection(Session["ConnectionStringSQL"].ToString());
connection.Open();
SqlCommand sqlCmd = new SqlCommand("SELECT Policies.PolicyID, FROM Policies", connection);
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
sqlDa.Fill(dt);
connection.Close();
if (dt.Rows.Count > 0)
{
for (int j = 0; j < dt.Rows.Count; j++)
{
policyID.Add(dt.Rows[j]["PolicyID"].ToString());
}
taskTable.Columns.Add("PolicyID");
if (policyID.Count != 0)
{
for (int k = 0; k < policyID.Count; k++)
{
DataRow tableRow = taskTable.NewRow();
tableRow["PolicyID"] = policyID[k];
taskTable.Rows.Add(tableRow);
}
Session["TaskTable"] = taskTable;
GridView1.DataSource = Session["TaskTable"];
GridView1.DataBind();
}
}
}
}
答案 0 :(得分:2)
未经测试,但此类事情应该这样做:
for (int i=0;i<5;i++) {
GridView gv = new GridView();
gv.DataSource = datasources[i];
Page.Controls.Add(gv);
}
Page.DataBind();
答案 1 :(得分:2)
答案1可以正常工作但是如果你将它嵌套在母版页等中则要小心。因为当你直接绑定到PAGE时,你似乎无法将它实际放在你的表单标签中。
我有一个sproc,返回我想要转储到页面的未知数量的不同表,所以我把一个占位符放在aspx页面上
然后通过我的数据集
使用循环foreach (DataTable table in ds.Tables)
{
GridView gv = new GridView();
gv.DataSource = table;
gvPlaceHolder.Controls.Add(gv);
}
.....或....
for (int i = 0; i < ds.Tables.Count; i++)
{
GridView gv = new GridView();
gv.DataSource = ds.Tables[i];
gvPlaceHolder.Controls.Add(gv);
}
..然后绑定到占位符,以便表格在我的子页面内的表单内部结束,这是在我的母版页内
gvPlaceHolder.DataBind();
答案 2 :(得分:0)
DataSet ds = new DataSet();
ds = obj.GetMedicalGridWithAge(MphID, ProductCode);
if(ds.Tables.Count > 0)
{
if (ds.Tables[1].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables.Count; i++)
{
GridView gv = new GridView();
gv.ID = "gv" + (i + 1);
gv.DataSource = ds.Tables[i];
gv.DataBind();
Panel1.Controls.Add(gv);
Label newLine = new Label(); newLine.Text = "<br/>";
Panel1.Controls.Add(newLine);
}
}
else
{
GridView gv = new GridView();
gv.ID = "gv" ;
gv.DataSource = null;`
gv.DataBind();
Panel1.Controls.Add(gv);
}
}