/// <summary>
/// 生成新增的树型节点ID的方法
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="KeyName">关键字名</param>
/// <param name="OldID">原ID</param>
/// <param name="Step">步长</param>
/// <returns>返回一个新节点的ID</returns>
private string BuildNewID(string TableName, string KeyName, string OldID, int Step)
{
StringBuilder strSql = new StringBuilder();
//SQL语句的拼接
strSql.Append("SELECT ");
strSql.Append(KeyName);
strSql.Append(" FROM ");
strSql.Append(TableName);
strSql.Append(" WHERE ");
strSql.Append(KeyName);
strSql.Append(" LIKE @");
strSql.Append(KeyName);
strSql.Append(" ORDER BY ");
strSql.Append(KeyName);
strSql.Append(" DESC");
//初始化新增组织的ID
string NewID = "";
//参数的设置
SqlParameter parm = new SqlParameter("@" + KeyName, SqlDbType.VarChar);
parm.Value = OldID.PadRight(OldID.Length + Step, '_');
//执行新增组织ID的操作
using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionString))
{
object obj = SqlHelper.ExecuteScalar(conn, CommandType.Text, strSql.ToString(), parm);
if (obj != null)
{
NewID = (string)obj;
NewID = OldID + (Convert.ToInt16(NewID.Substring(OldID.Length, NewID.Length - OldID.Length)) + 1).ToString().PadLeft(Step, '0');
}
else //如果组织下无下属组织,则在原组织下直接加上01
{
NewID = OldID.PadRight(OldID.Length + Step - 1, '0') + "1";
}
}
//返回新组织的ID
return NewID;
}