Mar*_*son 19 c# asp.net code-reuse
我还是很喜欢编程,我注意到我在重复代码:
protected void FillTradeSetups()
{
DBUtil DB = new DBUtil();
DataTable dtTradeSetups;
dtTradeSetups = DB.GetTradeSetups();
ddlSetups.DataValueField = "tradeSetupId";
ddlSetups.DataSource = dtTradeSetups;
ddlSetups.DataBind();
}
protected void FillTimeFrames()
{
DBUtil DB = new DBUtil();
DataTable dtTimeFrames;
dtTimeFrames = DB.GetTimeFrames();
ddlTimeFrames.DataValueField = "tfCode";
ddlTimeFrames.DataSource = dtTimeFrames;
ddlTimeFrames.DataBind();
}
protected void FillTradeGrades()
{
DBUtil DB = new DBUtil();
DataTable dtTradeGrades;
dtTradeGrades = DB.GetTradeGrades();
ddlTradeGrades.DataValueField = "tradeGrade";
ddlTradeGrades.DataTextField = "descr";
ddlTradeGrades.DataSource = dtTradeGrades;
ddlTradeGrades.DataBind();
}
protected void FillExecutionGrades()
{
DBUtil DB = new DBUtil();
DataTable dtExecutionGrades;
dtExecutionGrades = DB.GetExecutionGrades();
ddlExecutionGrades.DataValueField = "executionGrade";
ddlExecutionGrades.DataTextField = "descr";
ddlExecutionGrades.DataSource = dtExecutionGrades;
ddlExecutionGrades.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
我怎么能更聪明一点呢?你可以帮我重新编写代码,这样就不会重复这么多了吗?
UPDATE
哇,谢谢你的回复,我想我会发布我正在考虑实施的内容.我还创建了另一个小工作者来删除其他一些丑陋的重复代码.你觉得这怎么样?
void FillDropDownList(DropDownList ddl, DataTable dt, string dataValueField, string dataTextField, string defValue)
{
ddl.DataValueField = dataValueField;
ddl.DataSource = dt;
if (!string.IsNullOrEmpty(dataTextField))
{
ddl.DataTextField = dataTextField;
}
ddl.DataBind();
ddl.SelectedValue = defValue;
}
private string GetTradeItem(DataTable tradeDetails, string attribute)
{
return tradeDetails.Rows[0][attribute].ToString();
}
Run Code Online (Sandbox Code Playgroud)
然后用以下内容调用它:
int tradeId = int.Parse(Request.QueryString["tradeId"]);
DBUtil DB = new DBUtil();
DataTable tradeDetails = DB.GetTrade(tradeId);
FillDropDownList(ddlTradeGrades, DB.GetTradeGrades(), "tradeGrade", "descr", GetTradeItem(tradeDetails, "tradeGrade"));
Run Code Online (Sandbox Code Playgroud)
当丑陋变成更优雅的东西时,编码感觉很棒.
也许是这样的事情?
void SetupDataSource(DropDownList ddl, DataTable dt, string dataValueFieldm, string dataTextField)
{
if (ddl != null)
{
ddl.DataValueField = dataValueField;
ddl.DataSource = dt;
if (!string.IsNullOrEmpty(dataTextField))
{
ddl.DataTextField = dataTextField;
}
ddl.DataBind();
}
else
{
throw new ArgumentNullException("ddl");
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
FWIW,也许是这样的:
void BindControl(DropDownList ddl, string valueField, string textField, DataTable data) {
ddl.DataValueField = valueField;
ddl.DataTextField = textField ?? valueField; // textField can be null
ddl.DataSource = data;
ddl.DataBind();
}
DBUtil DB = new DBUtil();
BindControl(ddlTradeGrades, "tradeGrade", "descr", DB.GetTradeGrades());
...
Run Code Online (Sandbox Code Playgroud)
但是,管道本身并不是非常重复,应该考虑将来修改/维护的容易程度.
快乐的编码.
| 归档时间: |
|
| 查看次数: |
1703 次 |
| 最近记录: |