GridView动态生成模版列,并绑定模版列添加事件。
情况如下:
我根据条件,从多张表中查询得到一个DataTable。条件不一样,得到的DataTable的列也不一样,字段不一样,列数不一样。
所以必须动态生成Gridview。
1、Gridview中都是以模版列来绑定的,我要根据字段的不同绑定不同的模版列,大概是这个意思:
if (templateType == "txt")
{
TextBox txtBox = new TextBox();
}
else if(templateType == "ddl")
{
DropDownList dropDownList = new DropDownList();
}
protected void gvMaster_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#cdebed'");
e.Row.Attributes.Add("onmousedown", " if (c!='#cdebed'){b=c;this.style.backgroundColor='#cdebed';c='#cdebed'}else {c=b}");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
}
}
public string GetSubListPage(int pageIdx)
{
StringBuilder sbUrlTmp = new StringBuilder();
Model.View_SubList sbList = new View_SubList();
int pageCount = 0;
DataTable dt = GetSubListAndCount(pageIdx, out pageCount);
sbUrlTmp.Append("<table id='tableTastList'><tr>");
sbUrlTmp.Append("<th>ID</th>");
sbUrlTmp.Append("<th>时间</th>");
sbUrlTmp.Append("<th>网站</th>");
sbUrlTmp.Append("<th>登录时间</th>");
sbUrlTmp.Append("<th>上帝发誓</th></tr>");
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
sbUrlTmp.Append("<tr id=trSub" + dr["ID"].ToString() + ">");
sbUrlTmp.Append("<td>" + dr["ID"].ToString() + "</td>");
sbUrlTmp.Append("<td>" + dr["urdatetime"].ToString() + "</td>");
sbUrlTmp.Append("<td>" + dr["234234"].ToString() + "</td>");
sbUrlTmp.Append("<td>" + dr["sdfsf"].ToString() + "</td>");
sbUrlTmp.Append("<td>" + dr["sdfdf"].ToString() + "</td>");
sbUrlTmp.Append("</tr>");
}
}
else
{
sbUrlTmp.Append("<tr><td colspan='5' style='text-align:center;COLOR: #f80;'><strong>无任何数据...</strong></td></tr>");
}
sbUrlTmp.Append("<tfoot><tr>");
sbUrlTmp.Append("<td colspan='5'>");
pageCount++;
for (int i = 0; i < pageCount; i++)
{
if ((i > pageIdx - 5 && i < pageIdx + 5)
[解决办法]
i > pageCount - 3
[解决办法]
i < 3)//显示用户请求页面的前后三页标签以及最后三页标签
{
sbUrlTmp.Append("<a id='UrlPage" + i + "' href='#'>");
sbUrlTmp.Append((i + 1).ToString());
sbUrlTmp.Append("</a>");
}
else
{
sbUrlTmp.Append(".");
}
}
sbUrlTmp.Append("</td></tr></tfoot></table>");
return sbUrlTmp.ToString();
}