如何在使用两个数据表时清除数据表值

本文关键字:数据表 两个 清除 | 更新日期: 2024-10-18 19:34:05

在传递查询后,我有两个DataTable-第二个DataTable显示FirstDataTable值。请找到我的代码

我的连接类是

 public class Connection
 {
  conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
  public SqlDataAdapter ad;
  public DataTable dt = new DataTable();
  public DataTable gettable(string cmdtxt)
    {
        if (conn.State == ConnectionState.Open)
        {
            conn.Close();
        }
        conn.Open();
        dt.Clear();
        ad = new SqlDataAdapter(cmdtxt, conn);
        ad.Fill(dt);
        return dt;
    }
  }

我的代码是

 String qry="";
 DataTable shiftdt = new DataTable();
 DataTable empdt = new DataTable();   
 qry = "select ShiftID from ShiftGroup  where ShiftName="@Shift";
 shiftdt = conn.gettable(qry);
 qry = "select EmpCode from EmployeeShift where GroupCode="@gcode";
 empdt = conn.gettable(qry);

首先,shiftdt显示正确的输出ShiftID,当进行时,empdt显示第一列为ShiftID和第二列为EmpCode。事实上,我不想在empdt中使用ShiftID。当我继续时,Shiftdt值再次更改为EmpCode。我可以知道原因吗?

我试过"点网学习者",当我按照他更改代码时,我有一个下拉类,它显示类似的错误

`Error  8   'Sample.Connection' does not contain a definition for 'dt' and no extension method 'dt' accepting a first argument of type 'Sample.Connection' could be found (are you missing a using directive or an assembly reference?  

那是

 public class Dropdown
{
    Connection con = new Connection();
    public void dropdwnlist(string qry, DropDownList ddl)
    {
       con.gettable(qry);
       if (con.dt.Rows.Count > 0)
       {
           if (con.dt.Columns.Count == 2)
           {
               string str1 = con.dt.Columns[0].ColumnName.ToString();
               string str2 = con.dt.Columns[1].ColumnName.ToString();
               ddl.DataValueField = str1;
               ddl.DataTextField = str2;
               ddl.DataSource = con.dt;
               ddl.DataBind();
               con.dt.Columns.Remove(str1);
               con.dt.Columns.Remove(str2);
           }
           else
           {  
               string str = con.dt.Columns[0].ColumnName.ToString();
               ddl.DataValueField = str;
               ddl.DataTextField = str;
               ddl.DataSource = con.dt;
               ddl.DataBind();
               con.dt.Columns.Remove(str);
           }
       } 
           ddl.Items.Insert(0, ("--Select--"));
    }
}  

如何在使用两个数据表时清除数据表值

您在类中有dt作为全局变量,因此请使其成为函数的局部变量,或在启动gettable函数时分配新的DataTable。

您修改后的代码应该是

 public class Connection
{
 conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
public SqlDataAdapter ad;
public DataTable gettable(string cmdtxt)
{
    DataTable dt = new DataTable();
    if (conn.State == ConnectionState.Open)
    {
        conn.Close();
    }
    conn.Open();
    dt.Clear();
    ad = new SqlDataAdapter(cmdtxt, conn);
    ad.Fill(dt);
    return dt;
}
}

我已经根据您的需要修改了代码,请检查一下。

您不应该使用Connection Class DataTable(dt)Variable来绑定下拉列表,而应该为dropdown Class声明DataTable Variable Local并使用它来绑定dropdown。

下降类的修订代码

public class Dropdown
{
Connection con = new Connection();
public void dropdwnlist(string qry, DropDownList ddl)
{
DataTable dt =con.gettable(qry);
   if (dt.Rows.Count > 0)
   {
       if (dt.Columns.Count == 2)
       {
           string str1 = dt.Columns[0].ColumnName.ToString();
           string str2 = dt.Columns[1].ColumnName.ToString();
           ddl.DataValueField = str1;
           ddl.DataTextField = str2;
           ddl.DataSource = dt;
           ddl.DataBind();
           dt.Columns.Remove(str1);
           dt.Columns.Remove(str2);
       }
       else
       {  
           string str = dt.Columns[0].ColumnName.ToString();
           ddl.DataValueField = str;
           ddl.DataTextField = str;
           ddl.DataSource = dt;
           ddl.DataBind();
           dt.Columns.Remove(str);
       }
   } 
       ddl.Items.Insert(0, ("--Select--"));
    }
 }