zoukankan      html  css  js  c++  java
  • C# winform通过按钮上移下移 解决了datasource绑定问题

    事件代码:

    private void btn_frmDicType_MoveUp_Click(object sender, EventArgs e)
    {

    int lstLength = this.lst_frmDic_Type_Property.Items.Count;
    int ilstSelect = this.lst_frmDic_Type_Property.SelectedIndex;
    if (ilstSelect == 0)
    {
    MessageBox.Show("已在当前最顶端,无法再移动...");
    return;
    }
    else if (lstLength > ilstSelect && ilstSelect > 0)
    {
    DataTable dt = (DataTable)lst_frmDic_Type_Property.DataSource;
    DataTable dtCopy = new DataTable();
    dtCopy.Clear();
    dtCopy = dt.Copy();//拷贝dt
    dtCopy.Rows[ilstSelect].Delete();
    dtCopy.Rows[ilstSelect - 1].Delete();

    DataRow drClone1 = dtCopy.NewRow();
    DataRow drClone2 = dtCopy.NewRow();

    drClone1.ItemArray = dt.Rows[ilstSelect].ItemArray;//需要上移的
    drClone2.ItemArray = dt.Rows[ilstSelect - 1].ItemArray;//被移到下面
    dtCopy.Rows.InsertAt(drClone1, ilstSelect - 1);
    dtCopy.Rows.InsertAt(drClone2, ilstSelect);

    //删除未彻底删除的2行,需要使用datatable.AcceptChanges()方法来提交修改.
    dtCopy.AcceptChanges();

    lst_frmDic_Type_Property.DataSource = dtCopy;
    this.lst_frmDic_Type_Property.SelectedIndex = ilstSelect - 1;
    //操作数据库,修改顺序号

    //得到id号
    int id1 = Convert.ToInt32(dt.Rows[ilstSelect]["ID"].ToString());
    int id2 = Convert.ToInt32(dt.Rows[ilstSelect - 1]["ID"].ToString());
    // 根据id号,得到顺序号
    int order1 = Convert.ToInt32(frmDic_BLL.FrmDic_Dic_GetDICOrderById(id1).Tables[0].Rows[0]["DICOrder"]);
    int order2 = Convert.ToInt32(frmDic_BLL.FrmDic_Dic_GetDICOrderById(id2).Tables[0].Rows[0]["DICOrder"]);
    //根据id号,修改顺序号
    frmDic_BLL.FrmDic_Dic_UpdataPropertyDICOrderByID(id1, order2);
    frmDic_BLL.FrmDic_Dic_UpdataPropertyDICOrderByID(id2, order1);
    }
    else
    {
    return;
    }
    }

    private void btn_frmDicType_MoveDown_Click(object sender, EventArgs e)
    {
    int lstLength = this.lst_frmDic_Type_Property.Items.Count;
    int ilstSelect = this.lst_frmDic_Type_Property.SelectedIndex;
    if (ilstSelect == lstLength - 1)
    {
    MessageBox.Show("已在当前最末端,无法再移动...");
    return;
    }
    else if (lstLength - 1 > ilstSelect && ilstSelect >= 0)
    {
    DataTable dt = (DataTable)lst_frmDic_Type_Property.DataSource;
    DataTable dtCopy = new DataTable();
    dtCopy.Clear();
    dtCopy = dt.Copy();//拷贝dt

    /////////
    // delete和remove
    //Delete的使用是 datatable.Rows[i].Delete();
    //Remove的使用是datatable.Rows.Remove(datatable.Rows[i]);
    //这两个的区别是,使用delete后,只是该行被标记为deleted,但是还存在,用Rows.Count来获取行数时,还是删除之前的行数.需要使用datatable.AcceptChanges()方法来提交修改.

    dtCopy.Rows[ilstSelect].Delete();
    dtCopy.Rows[ilstSelect + 1].Delete();
    DataRow drClone1 = dtCopy.NewRow();
    DataRow drClone2 = dtCopy.NewRow();

    drClone1.ItemArray = dt.Rows[ilstSelect].ItemArray;//需要下移的
    drClone2.ItemArray = dt.Rows[ilstSelect + 1].ItemArray;//被移到上面
    dtCopy.Rows.InsertAt(drClone1, ilstSelect + 1);
    dtCopy.Rows.InsertAt(drClone2, ilstSelect);
    //删除未彻底删除的2行,需要使用datatable.AcceptChanges()方法来提交修改.
    dtCopy.AcceptChanges();

    lst_frmDic_Type_Property.DataSource = dtCopy;
    this.lst_frmDic_Type_Property.SelectedIndex = ilstSelect + 1;
    //操作数据库,修改顺序号

    //得到id号
    int id1 = Convert.ToInt32(dt.Rows[ilstSelect]["ID"].ToString());
    int id2 = Convert.ToInt32(dt.Rows[ilstSelect + 1]["ID"].ToString());
    // 根据id号,得到顺序号
    int order1 = Convert.ToInt32(frmDic_BLL.FrmDic_Dic_GetDICOrderById(id1).Tables[0].Rows[0]["DICOrder"]);
    int order2 = Convert.ToInt32(frmDic_BLL.FrmDic_Dic_GetDICOrderById(id2).Tables[0].Rows[0]["DICOrder"]);
    //根据id号,修改顺序号
    frmDic_BLL.FrmDic_Dic_UpdataPropertyDICOrderByID(id1, order2);
    frmDic_BLL.FrmDic_Dic_UpdataPropertyDICOrderByID(id2, order1);
    }
    else
    {
    return;
    }
    }

    BLL:

    // 根据ID,返回Dic表的顺序号
    public DataSet FrmDic_Dic_GetDICOrderById(int strID)
    {
    return (FrmDic_DAL.FrmDic_Dic_GetDICOrderById(strID));
    }
    // 根据ID,更新Dic表的顺序号
    public void FrmDic_Dic_UpdataPropertyDICOrderByID(int strID, int DICOrder)
    {
    FrmDic_DAL.FrmDic_Dic_UpdataPropertyDICOrderByID(strID, DICOrder);
    }

    DAL:

      

    #region "根据ID,更新Dic表的顺序号"
    /// <summary>
    /// 根据ID,更新Dic表的顺序号
    /// </summary>
    /// <param name="strID">被修改的id</param>
    /// <param name="DICOrder">序号</param>
    public static void FrmDic_Dic_UpdataPropertyDICOrderByID(int strID, int DICOrder)
    {
    string sqlCommand = "FrmDic_Dic_UpdataPropertyDICOrderByID";

    SqlParameter[] param ={
    new SqlParameter("@strID",SqlDbType.Int),
    new SqlParameter("@DICOrder",SqlDbType.Int),
    };
    param[0].Value = strID;
    param[1].Value = DICOrder;
    SqlHelper.ExecuteNonQuery(GHGD.Conn.Conn.SqlConn, CommandType.StoredProcedure, sqlCommand, param);
    }
    #endregion

    #region "根据ID,返回Dic表的顺序号"
    /// <summary>
    /// 根据ID,返回Dic表的顺序号
    /// </summary>
    /// <param name="strID"></param>
    public static DataSet FrmDic_Dic_GetDICOrderById(int strID)
    {
    string sqlCommand = "FrmDic_Dic_GetDICOrderById";
    DataSet ds = new DataSet();
    SqlParameter[] param ={
    new SqlParameter("@id",strID),
    };
    //param[0].Value = strID;

    SqlHelper.ExecuteDataset(GHGD.Conn.Conn.SqlConn, ds, "FrmDic_Dic_GetDICOrderById", CommandType.StoredProcedure, sqlCommand, param);

    if (ds.Tables[0].Rows.Count != 0)
    {
    ds.Dispose();
    return ds;
    }
    else
    {
    return null;
    }

    }
    #endregion

    存储过程:

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go


    ALTER procedure [dbo].[FrmDic_Dic_UpdataPropertyDICOrderByID]
    (@strID int,@DICOrder int)
    as
    begin
    update Dic set DICOrder=@DICOrder where ID=@strID
    end

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go

    ALTER PROCEDURE [dbo].[FrmDic_Dic_GetDICOrderById]
    (@id int)
    AS
    BEGIN
    SET NOCOUNT ON;
    select DICOrder from Dic where ID = @id
    END

  • 相关阅读:
    更改SQLServer实例默认字符集
    使用DMV排查数据库系统异常
    OD使用符号文件进行源码级调试问题
    申请博客园第一天
    各种mac软件地址
    第6条:理解“属性”
    提高代码质量的几个方法!52个,先罗列几个自己看
    Item2的使用
    MAC命令大全
    PV UV IP
  • 原文地址:https://www.cnblogs.com/meimao5211/p/3362763.html
Copyright © 2011-2022 走看看