创建 DataView 的方法有两种。
1、使用 DataView 构造函数。
以下代码示例演示如何使用 DataView 构造函数来创建 DataView。RowFilter、Sort 列和 DataViewRowState 将与 DataTable 一起提供。
DataView custDV = new DataView(custDS.Tables["Customers"],
"Country = 'USA'",
"ContactName",
DataViewRowState.CurrentRows);
DataView custDV = new DataView(custDS.Tables["Customers"],
"Country = 'USA'",
"ContactName",
DataViewRowState.CurrentRows);
2、创建对 DataTable 的DefaultView 属性的引用。DataView 构造函数可以为空,也可以采用 DataTable 作为单个参数,也可以同时采用 DataTable 与筛选条件、排序条件和行状态筛选器。
由于在创建 DataView 时以及在修改任何 Sort、RowFilter 或 RowStateFilter 属性时都会生成 DataView 的索引,所以当创建 DataView 时,通过以构造函数参数的形式提供任何初始排序顺序或筛选条件,可以实现最佳性能。如果在不指定排序或筛选条件的情况下创建 DataView,然后设置 Sort、RowFilter 或 RowStateFilter 属性,则会使索引生成至少二次:一次是在创建 DataView 时,另一次是在修改任何排序或筛选属性时。
请注意,如果使用不采用任何参数的构造函数来创建 DataView,那么在设置 Table 属性之前,将无法使用 DataView。
以下代码演示如何使用该表的 DefaultView 属性获取对 DataTable 的默认 DataView 的引用。
DataView custDV = custDS.Tables["Customers"].DefaultView;
DataView custDV = custDS.Tables["Customers"].DefaultView;
使用DataView实例:
//精选互动问答,同时改变精选状态,改为已精选
private void btnChosen_Click(object sender, System.EventArgs e)
{
int a=0;
int intCount = this.Dg.Items.Count;
string ids = "";
for(int i=0;i<intCount;i++)
{
CheckBox CheckSingle = this.Dg.Items[i].FindControl("CheckSingle") as CheckBox;
if(CheckSingle.Checked)
{
int ChatInfo_ID = Convert.ToInt32(this.Dg.DataKeys[i].ToString());
ids += ChatInfo_ID+",";
}
}
if(ids == "")
{
//没有选择
return;
}
ids = ids.TrimEnd(',');
//dataview
DataTable dt = ViewState["Dg"] as DataTable;
DataView dv = dt.DefaultView;
dv.RowFilter = "ChatInfo_ID in ("+ids+")";
AccessHelper.DBPath = AccessHelper.GetChatThemesDBPath();//固定表
if(isCommend==1)
{
//修改时先删除
AccessHelper.ExecuteNonQuery("delete from Question where Expert_ID="+Expert_ID);
} 
for(int i = 0 ; i < dv.Count;i++)
{
string FormUser_ID = dv[i]["FormUser_ID"].ToString();//专家id
string FormUserName = dv[i]["FromUserName"].ToString();//专家名
string ToUser_ID = dv[i]["ToUser_ID"].ToString();//提问者id
string ToUserName = dv[i]["ToUserName"].ToString();//提问者
string Question = dv[i]["ExpertAnswer"].ToString();//问题
string Answer = dv[i]["ChatContent"].ToString();//对问题的回答
string SendTime = dv[i]["SendTime"].ToString();
string ChatInfo_ID = dv[i]["ChatInfo_ID"].ToString();//聊天记录ID
StringBuilder sb = new StringBuilder();
sb.Append("insert into Question (Expert_ID,ChatInfo_ID,FormUser_ID,FormUserName,ToUser_ID,ToUserName,Question,Answer,SendTime)");
sb.Append(" values (");
sb.Append("@Expert_ID,@ChatInfo_ID,@FormUser_ID,@FormUserName,@ToUser_ID,@ToUserName,@Question,@Answer,@SendTime)");
OleDbParameter[] parameters = {
new OleDbParameter("@Expert_ID", OleDbType.Integer,4),
new OleDbParameter("@ChatInfo_ID", OleDbType.Integer,4),
new OleDbParameter("@FormUser_ID", OleDbType.Integer,4),
new OleDbParameter("@FormUserName", OleDbType.VarChar,50),
new OleDbParameter("@ToUser_ID", OleDbType.Integer,4),
new OleDbParameter("@ToUserName", OleDbType.VarChar,50),
new OleDbParameter("@Question", OleDbType.VarChar,0),
new OleDbParameter("@Answer", OleDbType.VarChar,0),
new OleDbParameter("@SendTime", OleDbType.Date)
};
parameters[0].Value = Expert_ID;
parameters[1].Value = ChatInfo_ID;
parameters[2].Value = FormUser_ID;
parameters[3].Value = FormUserName;
parameters[4].Value = ToUser_ID;
parameters[5].Value = ToUserName;
parameters[6].Value = Question;
parameters[7].Value = Answer;
parameters[8].Value = SendTime;
AccessHelper.DBPath = AccessHelper.GetChatThemesDBPath();//固定表
a = AccessHelper.ExecuteNonQuery(sb.ToString(),parameters);
}
string sql = "update Expert set IsCommend=1 where Expert_ID="+Expert_ID;
int b = DataAccess.AccessHelper.ExecuteNonQuery(sql);
if(a==1&&b==1)
{
Utils.MessageBoxUrl("精选成功,返回上页!","ExpertInter.aspx");
}
}


浙公网安备 33010602011771号