请问下这么做有什么好处,不用数据控件,全部自己拼TABLE,我现在改的烦的要死。
接手一项目
不知道是谁写的
所有显示数据的地方,全是用TABLE做的,拼HtmlTableRow,HtmlTableCell这么写的
我就想不通了,挺简单的一东西,直接搞GRIDVIEW不就完了嘛
莫非这么做有什么好处?
现在要改点功能什么的真难受
随便贴点代码,这个项目显示数据大概就类似是这么做的:
- C# code
private void LoadEmployeeData() { M_Employee employee= new M_Employee(); employee.Where.Resign_date.Operator = WhereParameter.Operand.IsNull; if (employee.Query.Load()) { lblWarning.Visible = false; HtmlTableRow r; do { r = new HtmlTableRow(); for (int i = 0; i < 18; i++) { r.Cells.Add(GetTableCell(employee, i)); } tblData.Rows.Add(r); } while (employee.MoveNext()); } else { lblWarning.Visible = true; lblWarning.Text = "No Data found!"; } } private HtmlTableCell GetTableCell(M_Employee obj, int column) { HtmlTableCell c; c = new HtmlTableCell(); switch (column) { case 0: if (Master.Level > 1) { c.InnerHtml = "<a href=\"javascript:OpenPopup('600','480','EditEmployee.aspx" + "?employeeid=" + obj.Employee_id + "');\">" + obj.Employee_id + "</a>"; } else c.InnerText = obj.Employee_id; break; case 1: c.InnerText = selectCompanyName(obj.Company_id); break; case 2: c.InnerText = selectDepartmentName(obj.Department_id); break; case 3: c.InnerText = selectDivisionName(obj.Division_id); break; case 4: c.InnerText = selectGroupName(obj.Group_id); break; case 5: c.InnerText = obj.Last_name.Trim() + obj.First_name.Trim(); break; case 6: if (obj.Sex) c.InnerText = "男"; else c.InnerText = "女"; break; case 7: c.InnerText = obj.Ablity; break; case 8: c.InnerText = obj.Duty; break; case 9: if (obj.s_Married == string.Empty) c.InnerHtml = " "; else if (obj.Married) c.InnerText = "已婚"; else c.InnerText = "未婚"; break; case 10: c.InnerText = obj.Degree.Trim(); break; case 11: if (obj.IsColumnNull(M_Employee.ColumnNames.Birthday)) c.InnerHtml = " "; else c.InnerText = obj.Birthday.ToString("yyyy/MM/dd"); break; case 12: c.InnerText = obj.Telephone.Trim(); break; case 13: c.InnerText = obj.Mobile; break; case 14: c.InnerText = obj.Address.Trim(); break; case 15: if (obj.s_Transtype == string.Empty) c.InnerHtml = " "; else if (obj.Transtype == 0) c.InnerText = "不坐班车"; else if (obj.Transtype == 1) c.InnerText = "坐班车"; break; case 16: if (obj.IsColumnNull(M_Employee.ColumnNames.Resign_date)) c.InnerHtml = " "; else c.InnerText = obj.Resign_date.ToString("yyyy/MM/dd"); break; case 17: c.InnerText = obj.Remark.Trim(); break; default: break; } if (string.IsNullOrEmpty(c.InnerHtml)) { c.InnerHtml = " "; } c.Align = "center"; return c; }
[解决办法]
说实话,没看出来有什么好的。
直接Response.Write出来,说是提高效率,我还能接受。
在code里面拼接出来,真看不出来有什么好处。
感觉好像java的人喜欢这么干。。
[解决办法]
用的什么数据库呢,写表格这么复杂
[解决办法]
反正一句话,看别人代码想跳楼,改别人代码想死:)
[解决办法]
没见过这么做的,倒是见过放到页面上处理的,后台这么写意义就失去了
[解决办法]
asp也不是这样写的,如果是习惯asp,可能会在前台页上做很多绑定
[解决办法]
项目里用的,发出来不太方便....
简单说就是用图片,html控件放到table里拼出来,
显示的样式可以自己随便定,
比如让checkbox放到icon前面或后面,
或者个别项目的checkbox不显示或不可用,
总之比.net 的treeview灵活
算法用递归
[解决办法]
可能是有的项目需求不好做,这样后台写的话,可以比较随意的定!
至少以前我写过一个系统,MD,WORD文档模板老变化,最后搞得我之后全都在后台写了
TNND
[解决办法]
我也改过这样的程序,有些人这样写是因为从ASP转过来的,有些人这样写据说是为了模版替换方便,
反正个人是没有兴趣写这样的东西
[解决办法]
看看从 ASP/C++转过来的程序员写 ASP.NET的代码别有一番风味
[解决办法]
if (Master.Level > 1)
{
c.InnerHtml =
"<a href=\"javascript:OpenPopup('600','480','EditEmployee.aspx" +
"?employeeid=" + obj.Employee_id +
"');\">" + obj.Employee_id + "</a>";
}
可能他觉得这样执行js方便吧