我有一个从1个连接表填充的网格视图。代码如下:
private void BindGridContent()
{
DataTable dtInfo = GetContent();
if (dtInfo.Rows.Count > 0)
{
// Bind Data
uxNoticeGv.DataSource = dtInfo;
uxNoticeGv.DataBind();
// Show GridView
uxNoticeGv.Visible = true;
// Hide Grid Message
uxGridMessageLbl.Visible = false;
}
else
{
// Hide GridView
uxNoticeGv.Visible = false;
// Display Grid Message
uxGridMessageLbl.Visible = true;
}
uxGridViewHeader.SetGridViewHeader(uxNoticeGv, dtInfo.Rows.Count);
}
我遇到的问题是当前表格没有对我在gridview中返回的某些字段进行说明。而是显示ID值。我也无法加入该表,除非我创建了一个链接服务器,我没有权限这样做。 (排除了链接服务器的答案)
下面是我的数据访问类(返回当前表的图层):
public static DataTable ViewLogSearch(string lineNumber, DateTime createdDateBegin, string detailPurposeOrFunction, string connectionTypeDesc, DateTime createdDateEnd, string machineServerConnection)
{
var sqlStatement = new StringBuilder();
sqlStatement.Append(" SELECT");
sqlStatement.Append(" ae.AccountEntryID, ae.LastUpdatedBy, ae.PurposeOrFunctionDialInDesc, ae.PhysicalLocationDesc, ");
sqlStatement.Append(" ae.PurposeOrFunctionDialOutDesc, ae.PasswordChangeFrequency, ae.OtherLayerAuthenticationDesc, ");
sqlStatement.Append(" ae.TypeOfConnectionID, ae.CreatedDate, ct.ConnectionTypeDesc,");
sqlStatement.Append(" ae.LineNumber, ae.DetailPurposeOrFunction");
sqlStatement.Append(" From");
sqlStatement.Append(" dbo.AccountEntry ae");
//Added After
sqlStatement.Append(" Join");
sqlStatement.Append(" dbo.ConnectionType ct");
sqlStatement.Append(" on ae.TypeOfConnectionID = ct.ConnectionTypeID");
sqlStatement.Append(" WHERE 1=1 ");
// SQL parameter collection
var sqlParams = new List<SqlParameter>();
// Commented out excess logic but I am passing parameters
// Create sql command
var sqlCmd = new SqlCommand(sqlStatement.ToString());
// Add sql parameters to sql command
sqlCmd.Parameters.AddRange(sqlParams.ToArray());
// Execute sql
return DBAccess.SQLServer.GetDataTable(DBAccess.SQLServer.GetConnectionString("AccountDB"), sqlCmd);
}
我可以查询其他数据库。所以我想的是我会查询其他数据库并返回我感兴趣的字段。这将需要我有2个连接字符串。
有关如何为1个方法创建2个连接字符串的任何想法?请注意,联合表格不是我有兴趣引入的表格。我对这个问题的其他方法持开放态度。请提供伪代码。
答案 0 :(得分:0)
由于您要加载DataTables,更好的方法可能是保留两个单独的函数 - 每个函数对应一个数据集。这与单一责任原则(SRP)保持一致,这是鼓励保留每个只完成一项工作的小功能。
第三个函数调用这两个函数,然后使用Linq加入数据。有关DataTable连接的更多信息,请参阅this SO post。