【发布时间】:2013-12-30 14:12:36
【问题描述】:
我想在gridview控件中绑定datalist
在下图中 Step-1,Step-2,... 来自数据库,我想将其绑定到 datalist 中
我试过下面的代码
.aspx
<asp:GridView ID="gvRoadMap" runat="server" AutoGenerateColumns="false" Width="100%"
Style="border: 0px solid #cdcdcd" OnRowDataBound="gvRoadMap_RowDataBound" border="0"
CellSpacing="1" CellPadding="3" AllowSorting="true">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:DataList ID="dlRMStepHeader" runat="server" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Label ID="lblStepName" Text='<%#Eval("STEPNAME") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:DataList>
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<EditItemTemplate>
<asp:DataList ID="dlRMStepItem" OnItemDataBound="dlRMStepItem_ItemDataBound" runat="server">
</asp:DataList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!base.IsPostBack)
{
objUserInformation = this.Session["USERSECURITYINFO"] as UserSecurityInformation;
//Presentationlayer_Views_AddRoadMap.USERID = Convert.ToInt64(BusinessEngineFacade.GetBusinessEngineFacade().get_GetSessionUserInformation().UserId);
//this.hdnRoadMapID.Value = "0";
if (base.Request.QueryString["ID"] != null)
{
trainingMapID = Convert.ToString(base.Request.QueryString["ID"]);
}
this.GetRoadMapData();
}
}
private void GetRoadMapData()
{
RoadMapManager roadmapMgr = new RoadMapManager();
DataSet dataSet = roadmapMgr.GetAllRaodMapData(Convert.ToInt64(trainingMapID));
this.ViewState["RoadMapData"] = dataSet;
if (dataSet.Tables.Count > 0)
{
if (trainingMapID != null)
{
this.txtRoadmapName.Text = Convert.ToString(dataSet.Tables[3].Rows[0][0]);
this.txtDescription.Text = Convert.ToString(dataSet.Tables[3].Rows[0][1]);
this.chkActive.Checked = Convert.ToBoolean(dataSet.Tables[3].Rows[0][2]);
}
else
{
this.txtRoadmapName.Text = "";
this.txtDescription.Text = "";
this.chkActive.Checked = false;
}
this.BindRoadMap(dataSet.Tables[0]);
}
}
private void BindRoadMap(DataTable dt)
{
this.gvRoadMap.DataSource = dt;
this.gvRoadMap.DataBind();
}
protected void gvRoadMap_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataTable dataSource = new DataTable();
DataList dataList = new DataList();
if (e.Row.RowType == DataControlRowType.Header)
{
dataList = (DataList)e.Row.FindControl("dlRMStepHeader");
dataSource = ((DataSet)this.ViewState["RoadMapData"]).Tables[1];
dataList.DataSource = dataSource;
dataList.DataBind();
}
if (e.Row.RowType == DataControlRowType.DataRow)
{
dataList = (DataList)e.Row.FindControl("dlRMStepItem");
dataSource = ((DataSet)this.ViewState["RoadMapData"]).Tables[1];
dataList.DataSource = dataSource;
dataList.DataBind();
}
}
![enter image description here][1]
如何在asp.net中设计上图?
有什么想法吗?提前致谢。
【问题讨论】:
-
您面临的具体问题是什么?不是在编译吗?是否引发异常?它没有给出预期的结果吗?通过提供有关您的问题的更多信息来帮助我们为您提供帮助...
-
dataList = (DataList)e.Row.FindControl("dlRMStepItem");在这里我收到一个错误“对象引用未设置实例”
-
我有 C# 代码,但我不确定如何根据给定的代码进行设计
标签: c# asp.net gridview datalist