GridView控件的绑定问题; 我用GridView控件绑定了一个数据库表,但是其中的一个字段我想用另一个表的字段内容来替换显示,我用了DropDownList来进行绑定,可是不管用,有没有什么方法让这个绑定的字段显示在表中,或者有其它更好的办法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一、两表没关联那你将两个表加到同一个DataSet里面,把GridView的DataSource设定为dataset将你要的字段替换,再绑定。GridView1.DataSource=dataset;GridView1.DataBind();二、两表关联可用以下方法合并两DataTable,把GridView的DataSource设定为datatable,将你要的字段替换,再绑定。public enum JoinType { LeftJoin,InnerJion };/// <summary> /// 聯接兩個DataTable /// </summary> /// <param name="dt1">FirstDataTable</param> /// <param name="dt2">SecondDateTable</param> /// <param name="ColuName1">the columnName in FirstDataTable that use in connection.Exp: comp,dept</param> /// <param name="ColuName2">the columnName in SecondDateTable that use in connection.Exp: comp,dept</param> /// <param name="Mark">true:SecondDT移除行(InnerJion);false:SecondDT不移除行(LeftJoin)</param> /// <param name="type"></param> /// <returns></returns> public static DataTable ConnectTwoTable(DataTable FirstDT, DataTable SecondDT, string ColuName1, string ColuName2, bool Mark,JoinType JType ) { try { DataTable dt1 = FirstDT.Copy(); DataTable dt2 = SecondDT.Copy(); string[] Names1 = ColuName1.Trim().Split(','); string[] Names2 = ColuName2.Trim().Split(','); //確保ColuName1與ColuName2是不同的 string dtmNow = DateTime.Now.ToString("yyyyMMddhhmmss"); for (int i = 0; i < Names2.Length; i++) { string Name1 = Names1[i].ToString().Trim(); Names1[i] = Name1; string Name2 = Names2[i].ToString().Trim(); dt2.Columns[Name2].ColumnName = Name2 + dtmNow; Names2[i] = Name2 + dtmNow; } int FirstColuNum = dt1.Columns.Count; dt1.BeginLoadData(); foreach (DataColumn colu2 in dt2.Columns) { if (dt1.Columns.Contains(colu2.ColumnName)) colu2.ColumnName += "_Second";//同名列加後綴"_Second"標示,已示區別. dt1.Columns.Add(colu2.ColumnName, colu2.DataType);//不同名的列添加到dt1中. } int LastColuNum = dt1.Columns.Count; List <DataRow> list= new List<DataRow>(); foreach (DataRow dt1Row in dt1.Rows) { string strSelect = string.Empty; for (int j = 0; j < Names2.Length; j++) { string conText = dt1Row[Names1[j].ToString()].ToString(); strSelect += Names2[j].ToString() + "='" + conText + "' and "; } strSelect = strSelect.Substring(0, strSelect.Length - 5); DataRow[] dt2Rows = dt2.Select(strSelect); if (dt2Rows.Length > 0) { foreach (DataRow dt2Row in dt2Rows) { for (int i = FirstColuNum; i < LastColuNum; i++) { dt1Row[i] = dt2Row[i - FirstColuNum]; } if (Mark) dt2.Rows.Remove(dt2Row);//移除已使用過的行 } } else { list.Add(dt1Row); } } if (JType == JoinType.InnerJion) { foreach (DataRow row in list) { dt1.Rows.Remove(row); } } for (int k = 0; k < Names2.Length; k++) { dt1.Columns.Remove(Names2[k].ToString()); } dt1.EndLoadData(); return dt1; } catch (Exception ex) { throw new Exception("the columnName is not in table" + ex.Message); } } } 两表之间的那个数据如果没什么关联 又想一起显示到datagridview中 建议用视图 再显示倒控件中我感觉这个方法比较快捷 裸尽所有分数求答案:关于dotnet程序交互问题!!!! 嵌入VS2008开发环境 C#实现图片控件正弦运动 文件传输的技术问题! 斑马ZPL II指令问题(~DG指令) DataGrid连接数据库时显示的问题??? 平台调用----封送结构体指针。 如何实现winform上textbox1输满三个数字后光标跳到textbox2? vs2005 如何在新建窗体中加载DLL(新窗体),求步骤 修改datagirdview单元格内容后,不能更新数据库,请高手指点! 如何给GraphicsPath包含的图形填充颜色? C#怎样实现3D人物直接显示到桌面
那你将两个表加到同一个DataSet里面,把GridView的DataSource设定为dataset
将你要的字段替换,再绑定。
GridView1.DataSource=dataset;
GridView1.DataBind();二、两表关联
可用以下方法合并两DataTable,把GridView的DataSource设定为datatable,将你要的字段替换,再绑定。
public enum JoinType { LeftJoin,InnerJion };/// <summary>
/// 聯接兩個DataTable
/// </summary>
/// <param name="dt1">FirstDataTable</param>
/// <param name="dt2">SecondDateTable</param>
/// <param name="ColuName1">the columnName in FirstDataTable that use in connection.Exp: comp,dept</param>
/// <param name="ColuName2">the columnName in SecondDateTable that use in connection.Exp: comp,dept</param>
/// <param name="Mark">true:SecondDT移除行(InnerJion);false:SecondDT不移除行(LeftJoin)</param>
/// <param name="type"></param>
/// <returns></returns>
public static DataTable ConnectTwoTable(DataTable FirstDT, DataTable SecondDT, string ColuName1, string ColuName2, bool Mark,JoinType JType )
{
try
{
DataTable dt1 = FirstDT.Copy();
DataTable dt2 = SecondDT.Copy();
string[] Names1 = ColuName1.Trim().Split(',');
string[] Names2 = ColuName2.Trim().Split(',');
//確保ColuName1與ColuName2是不同的
string dtmNow = DateTime.Now.ToString("yyyyMMddhhmmss");
for (int i = 0; i < Names2.Length; i++)
{
string Name1 = Names1[i].ToString().Trim();
Names1[i] = Name1;
string Name2 = Names2[i].ToString().Trim();
dt2.Columns[Name2].ColumnName = Name2 + dtmNow;
Names2[i] = Name2 + dtmNow;
}
int FirstColuNum = dt1.Columns.Count;
dt1.BeginLoadData();
foreach (DataColumn colu2 in dt2.Columns)
{
if (dt1.Columns.Contains(colu2.ColumnName))
colu2.ColumnName += "_Second";//同名列加後綴"_Second"標示,已示區別.
dt1.Columns.Add(colu2.ColumnName, colu2.DataType);//不同名的列添加到dt1中.
}
int LastColuNum = dt1.Columns.Count;
List <DataRow> list= new List<DataRow>();
foreach (DataRow dt1Row in dt1.Rows)
{
string strSelect = string.Empty;
for (int j = 0; j < Names2.Length; j++)
{
string conText = dt1Row[Names1[j].ToString()].ToString();
strSelect += Names2[j].ToString() + "='" + conText + "' and ";
}
strSelect = strSelect.Substring(0, strSelect.Length - 5);
DataRow[] dt2Rows = dt2.Select(strSelect);
if (dt2Rows.Length > 0)
{
foreach (DataRow dt2Row in dt2Rows)
{
for (int i = FirstColuNum; i < LastColuNum; i++)
{
dt1Row[i] = dt2Row[i - FirstColuNum];
}
if (Mark)
dt2.Rows.Remove(dt2Row);//移除已使用過的行
}
}
else
{
list.Add(dt1Row);
}
}
if (JType == JoinType.InnerJion)
{
foreach (DataRow row in list)
{
dt1.Rows.Remove(row);
}
}
for (int k = 0; k < Names2.Length; k++)
{
dt1.Columns.Remove(Names2[k].ToString());
}
dt1.EndLoadData();
return dt1;
}
catch (Exception ex)
{
throw new Exception("the columnName is not in table" + ex.Message);
}
}
}
我感觉这个方法比较快捷