DataList

来源:互联网 发布:卷皮淘宝客 模板 编辑:程序博客网 时间:2024/05/04 10:34

=======================代码实现增删改

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            this.Bind();
        }
    }
    private void Bind()
    {
       this.DataList1.DataSource= DbHelperSQL.Query("select * from info").Tables[0];
       this.DataList1.DataBind();
    }
    protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
    {
        this.DataList1.EditItemIndex = e.Item.ItemIndex;
        this.Bind();
    }
    protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)
    {
        this.DataList1.EditItemIndex = -1;
        this.Bind();
    }
    protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
    {
        string ID = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();//主键
        string address = ((TextBox)this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox1")).Text;
        string sql = "delete from info where ID=" + ID;
        int row = DbHelperSQL.ExecuteSql(sql);
        if (row > 0)
        {
            ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('ok')</script>");
        }
    }
    protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
    {
        string ID = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();//主键
        string address = ((TextBox)this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox1")).Text;
        string sql = "update info set address='"+address+"' where ID="+ID;
       int row= DbHelperSQL.ExecuteSql(sql);
       if (row>0)
       {
           ClientScript.RegisterStartupScript(this.GetType(),"alert","<script>alert('ok')</script>");
       }
    }
===========================分页=

<asp:DataList></asp:DataList><br />
       
        <asp:LinkButton ID="LinkButton3" runat="server" >首页</asp:LinkButton>&nbsp;
        <asp:LinkButton ID="LinkButton5" runat="server" >上一页</asp:LinkButton>
        <asp:LinkButton ID="LinkButton6" runat="server" >下一页</asp:LinkButton>
        <asp:LinkButton ID="LinkButton7" runat="server" >尾页</asp:LinkButton>
   </div>
<asp:HiddenField ID="HiddenField1" runat="server" />
        <asp:HiddenField ID="HiddenField2" runat="server" />
 </form>
//.cs
protected void Page_Load(object sender, EventArgs e)
    {
       
        if (!IsPostBack)
            this.Bind(0);
    }

    public DataSet query()
    {
        string sql = "select * from messages";
         DataSet ds=DbHelperSQL.Query(sql);
         return ds;
    }
    public void Bind(int  pageindex)
    {
        PagedDataSource P = new PagedDataSource();
        P.DataSource = query().Tables[0].DefaultView;

        P.AllowPaging = true;
        P.PageSize = 4;
        this.HiddenField2.Value = P.PageCount.ToString();//总页数
        P.CurrentPageIndex = pageindex;
        this.HiddenField1.Value = pageindex.ToString();//当前页

        this.DataList2.DataSource = P;
        //尾页
        if (P.CurrentPageIndex == P.PageCount - 1)
        {
            this.LinkButton4.Enabled = false;
            this.LinkButton3.Enabled = false;
            this.LinkButton2.Enabled = true;
            this.LinkButton1.Enabled = true;
        }
        //首页
        if (P.CurrentPageIndex ==0)
        {
            this.LinkButton2.Enabled = false;
            this.LinkButton1.Enabled = false;
            this.LinkButton4.Enabled = true;
            this.LinkButton3.Enabled = true;
        }
        //中间页数
        if (P.CurrentPageIndex != 0 && P.CurrentPageIndex != P.PageCount - 1)
        {
            this.LinkButton2.Enabled = true;
            this.LinkButton1.Enabled = true;
            this.LinkButton4.Enabled = true;
            this.LinkButton3.Enabled = true;
        }
        this.DataList2.DataBind();       
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        int pageindex = 0;
        this.Bind(pageindex);

    }
    //上一页
    protected void LinkButton2_Click(object sender, EventArgs e)
    {
       
        int pageindex = int.Parse(this.HiddenField1.Value) - 1;//当前页控件hidden值
        this.Bind(pageindex);
    }
    protected void LinkButton3_Click(object sender, EventArgs e)
    {
        int pageindex = int.Parse(this.HiddenField1.Value) +1;
        this.Bind(pageindex);
    }
    protected void LinkButton4_Click(object sender, EventArgs e)
    {
        int pageindex =int.Parse(this.HiddenField2.Value)-1;//当前页控件hidden的值,为最后一页时
        this.Bind(pageindex);
    }
===============================点击时链接事件

protected void DataList2_ItemCommand(object source, DataListCommandEventArgs e)
    {
        ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('a')</script>");
    }

 

今天有人要做DataList的行删除操作,不知道如何获取当前行的ID,之前一直是用GridView来做...没有用过DataList做过类似的功能...现在把相关的代码做了下记录...以备日后之需...毕竟自己太健忘了..呵呵呵...
(1)DataList中添加按钮,并为其添加 CommandArgument属性与CommandName属性...
<asp:Button ID="Button1" runat="server" Text="Button" CommandArgument='<%# Eval("EID") %>' CommandName="del"/>
(2)DataList有个事件OnItemCommand事件,事件在单击DataList控件中的任一按钮时引发...这样在单击当前行的按钮时就会触发事件并获得当前行的ID,进行删除操作啦....
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "del")
{
string myid = e.CommandArgument.ToString();

}  
}
====================================绑定数据

<EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Content") %>'></asp:TextBox>
                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("Author") %>'></asp:TextBox>
                <asp:TextBox ID="TextBox3" runat="server" Text='<%# Eval("PubTime") %>'></asp:TextBox>                       
                <asp:LinkButton ID="LinkButton1" CommandName="Update" runat="server" >更新</asp:LinkButton>
                 <asp:LinkButton ID="LinkButton4" runat="server" CommandName="Cancel" >取消</asp:LinkButton>
            </EditItemTemplate>
            <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("Content") %>'></asp:Label>
                        <asp:Label ID="Label2" runat="server" Text='<%# Eval("Author") %>'></asp:Label>
                        <asp:Label ID="Label4" runat="server" Text='<%# Eval("PubTime") %>'></asp:Label><br />
                        <asp:LinkButton ID="LinkButton2" CommandName="Edit" runat="server" >编辑</asp:LinkButton>
                        <asp:LinkButton ID="LinkButton3" runat="server" CommandName="Delete" >删除</asp:LinkButton>               
                   
            </ItemTemplate>
取数据
protected void DataList2_UpdateCommand(object source, DataListCommandEventArgs e)
    {

        string id = this.DataList2.DataKeys[e.Item.ItemIndex].ToString();
        string content = ((TextBox)this.DataList2.Items[e.Item.ItemIndex].FindControl("TextBox1")).Text;
        string author = ((TextBox)this.DataList2.Items[e.Item.ItemIndex].FindControl("TextBox2")).Text;
        string time = ((TextBox)this.DataList2.Items[e.Item.ItemIndex].FindControl("TextBox3")).Text;
        string sql = " update messages set content='" +  content + "',author='" + author + "' where id='" + id + "'";
        conn = new SqlConnection(connstr);
        conn.Open();
        comm = new SqlCommand(sql, conn);
        int count = comm.ExecuteNonQuery();
        if (count > 0)
        {

            this.DataList2.EditItemIndex = -1;
            this.Bind();
            ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('ok')</script>");
        }
        else
        {
            //ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('wrong')</script>");

        }
        conn.Close();
    }
========================错误提示=

 datalist提示:index索引超出范围,htm中,  DataKeyField="ID"没设置

原创粉丝点击