DataView

来源:互联网 发布:js幻灯片代码 编辑:程序博客网 时间:2024/05/18 03:31
    protected void Page_Load(object sender, EventArgs e)    {    if (!IsPostBack)    {        Session["table"] = MakeTable();        GridView1.DataSource = (DataTable)Session["table"];        GridView1.DataBind();    }    }     public DataTable MakeTable()    {    //生成datatable    DataTable dt = new DataTable("table1");    DataColumn myDataColumn;    DataRow myDataRow;     myDataColumn = new DataColumn();    myDataColumn.ColumnName = "id";    myDataColumn.DataType = System.Type.GetType("System.Int32");    myDataColumn.ReadOnly = true;    myDataColumn.Unique = true;    dt.Columns.Add(myDataColumn);     myDataColumn = new DataColumn();    myDataColumn.ColumnName = "商品名称";    myDataColumn.DataType = System.Type.GetType("System.String");    dt.Columns.Add(myDataColumn);     myDataColumn = new DataColumn();    myDataColumn.ColumnName = "商品价格";    myDataColumn.DataType = System.Type.GetType("System.Decimal");    dt.Columns.Add(myDataColumn);     //add rows    myDataRow = dt.NewRow();    myDataRow["id"] = 1;    myDataRow["商品名称"] = "aaa";    myDataRow["商品价格"] = 100;    dt.Rows.Add(myDataRow);     myDataRow = dt.NewRow();    myDataRow["id"] = 2;    myDataRow["商品名称"] = "bbb";    myDataRow["商品价格"] = 200;    dt.Rows.Add(myDataRow);     myDataRow = dt.NewRow();    myDataRow["id"] = 3;    myDataRow["商品名称"] = "ccc";    myDataRow["商品价格"] = 300;    dt.Rows.Add(myDataRow);    return dt;    }     /// <summary>    /// 如果要对数据库中的表做查询或者要排序.不用再直接从数据库表中做查询.    /// 只需要把对应的表的所有字段取出来放到DataSet中的datatable中.然后创建对应的dataview    /// 这样就可以对dataview进行查询.或者排序    /// 下面的例子是把根据一个datatable创建dataview.然后对其模糊查询.把dataview绑定到gridview上显示.    ///    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    protected void btn1_Click(object sender, EventArgs e)    {    DataTable dt = (DataTable)Session["table"];    //create dataview for dt    DataView dv = new DataView(dt);    dv.RowFilter = "商品名称 like '%" + txt1.Text.Trim() + "%'";  //这里只要写where就好了    GridView1.DataSource = dv;    GridView1.DataBind();    }     /// <summary>    /// 下面的例子是把根据一个datatable创建dataview.对其价格范围的查询.把dataview绑定到gridview上显示.    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    protected void btnPriceRange_Click(object sender, EventArgs e)    {    DataTable dt = (DataTable)Session["table"];    DataView dv2 = new DataView(dt);    //这里RowFilter的条件写法不支持between and的方法的    string sqlsele = string.Format("商品价格 >{0} and 商品价格 < {1}", txt2.Text, txt3.Text);    dv2.RowFilter = sqlsele;    GridView1.DataSource = dv2;    GridView1.DataBind();    }     public static bool flagsort = true;     /// <summary>    /// ;利用DataView 根据商品价格反序排列    /// </summary>    protected void btnSort_Click(object sender, EventArgs e)    {    DataTable dt = (DataTable)Session["table"];    DataView dv3 = new DataView(dt);    if (flagsort)    {        dv3.Sort = "商品价格 desc";        flagsort = false;    }    else    {        dv3.Sort = "商品价格 asc";        flagsort = true;    }    GridView1.DataSource = dv3;    GridView1.DataBind();    }     /// <summary>    /// 用DataView 的 find/findrows    /// </summary>    protected void btnFindRows_click(object sender, EventArgs e)    {    DataTable dt = (DataTable)Session["table"];    DataView dv = new DataView(dt);    dv.Sort = "商品名称 asc"//要使用find方法.就要对视图先排序     string findrow = txt4.Text.Trim();    int rowIndex = dv.Find(findrow);        //查找名字所在的字段    System.Windows.Forms.MessageBox.Show(rowIndex.ToString());    DataRowView[] drv = dv.FindRows("byFind:  " + findrow);    System.Text.StringBuilder sb = new System.Text.StringBuilder();    foreach (var item in drv) //因为所查询的名字可能有多行    {        sb.Append(item["id"]);    }    System.Windows.Forms.MessageBox.Show("byFindRows:  " + sb.ToString()); //可以找到名字对应的id号    }    }
======================================
<div>    <asp:GridView ID="GridView1" runat="server" Height="172px" Width="492px">    </asp:GridView>    <br />    模糊查询产品名:    <asp:TextBox ID="txt1" runat="server"></asp:TextBox>    <asp:Button ID="btn1" runat="server" Text="search" OnClick="btn1_Click" />    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <asp:Button ID="btnSort" runat="server" Text="by商品价格sort ascORdesc" OnClick="btnSort_Click" /></div><p>    查商品价格:    <asp:TextBox ID="txt2" runat="server"></asp:TextBox>    ---    <asp:TextBox ID="txt3" runat="server"></asp:TextBox>    <asp:Button ID="btn2" runat="server" Text="search price range" OnClick="btnPriceRange_Click" /></p><p>    dataView find/findRows:<asp:TextBox ID="txt4" runat="server"></asp:TextBox>    <asp:Button ID="btnFindRows" runat="server" Text="User DataView find" OnClick="btnFindRows_click" /></p>

原创粉丝点击