DataView

    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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值