Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动填充复选框的问题_C#_Sql_Asp.net - Fatal编程技术网

C# 自动填充复选框的问题

C# 自动填充复选框的问题,c#,sql,asp.net,C#,Sql,Asp.net,我可以在这里使用只读集合并删除数据集吗?我是C语言的新手,我对如何做到这一点感到困惑。我有一个下拉框,它是从SQL中保存客户机名称的列中填充的。我有一个文本框,您可以在其中输入电子邮件地址,该文本框将使用下拉框中选中的值更新SQL中的电子邮件地址。现在,当电子邮件输入文本框时,是否有一种方法可以从SQL中提取这些保存的值,并根据相应电子邮件的表中已有的内容自动选中复选框?我见过使用编码的值而不是SQL中的值来实现这一点。此外,如果电子邮件可以访问多个客户端,则在插入SQL时,客户端名称将以管道分

我可以在这里使用只读集合并删除数据集吗?我是C语言的新手,我对如何做到这一点感到困惑。我有一个下拉框,它是从SQL中保存客户机名称的列中填充的。我有一个文本框,您可以在其中输入电子邮件地址,该文本框将使用下拉框中选中的值更新SQL中的电子邮件地址。现在,当电子邮件输入文本框时,是否有一种方法可以从SQL中提取这些保存的值,并根据相应电子邮件的表中已有的内容自动选中复选框?我见过使用编码的值而不是SQL中的值来实现这一点。此外,如果电子邮件可以访问多个客户端,则在插入SQL时,客户端名称将以管道分隔

这是我到目前为止所拥有的

if (EmailList.Value == "") Connection ls = new Connection(); Recordset rs = new Recordset();
ls.Open(connections.myconn);

rs.Open("select email from users order by email", ls);

string emails = "";

while (!rs.EOF) { emails += rs.Fields[0].Value + " "; rs.MoveNext(); }

EmailList.Value = emails;

using (SqlCommand cmd1 = new SqlCommand("SELECT * FROM tracking_mpc order by ClientName"))
{
    cmd1.CommandType = CommandType.Text;
    cmd1.Connection = con1;
    con1.Open();
    webreport.DataSource = cmd1.ExecuteReader();
    webreport.DataTextField = "ClientName";
    webreport.DataValueField = "CltID";
    webreport.DataBind();
    con1.Close();
}

以下是StringFromDatabase的更好实现:

public List<string> GetClientNames(string email)
{
  var constr=ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
  var sql = "SELECT Clients FROM users WHERE Email=@email";

  using (var conn = new SqlConnection(constr))
  using (var cmd = new SqlCommand(sql, conn))
  {
    cmd.Parameters.Add("@email",SqlDbType.VarChar).Value = email;
    conn.Open();
    return ((string)cmd.ExecuteScalar()).Split('|').ToList();
  }
}
这里是相同的,但如果您将连接字符串更改为MySql、Oracle等,则以一种与数据库无关的方式工作:

public List<string> GetClientNames(string email)
{
    var constr = ConfigurationManager.ConnectionStrings["myConnectionString"];
    var sql = "SELECT Clients FROM users WHERE Email=@email";

    var factory = DbProviderFactories.GetFactory(constr.ProviderName);
    using (var conn = factory.CreateConnection())
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = sql;
        conn.ConnectionString = constr.ConnectionString;
        var param = cmd.CreateParameter();
        param.ParameterName = "@email";
        param.Value = email;
        cmd.Parameters.Add(param);
        conn.Open();
        return ((string)cmd.ExecuteScalar()).Split('|').ToList();
    }
}

欢迎来到stack!!请参阅“如何提问”部分……示例解决方案可能如下所示:保存电子邮件。查找电子邮件行。为复选框编写setter。根据从电子邮件行返回的属性设置复选框。我知道这并不能回答您的问题,但请不要这样做:新建SqlCommandSELECT来自email=+EmailTextBox.Text用户的客户端。请参阅:另外,当您仅使用已知数量的字段时,不要从表中选择*。两个在你的情况下。@RobertMcKee我明白这一点,我只是想让这件事运作起来。
public List<string> GetClientNames(string email)
{
    var constr = ConfigurationManager.ConnectionStrings["myConnectionString"];
    var sql = "SELECT Clients FROM users WHERE Email=@email";

    var factory = DbProviderFactories.GetFactory(constr.ProviderName);
    using (var conn = factory.CreateConnection())
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = sql;
        conn.ConnectionString = constr.ConnectionString;
        var param = cmd.CreateParameter();
        param.ParameterName = "@email";
        param.Value = email;
        cmd.Parameters.Add(param);
        conn.Open();
        return ((string)cmd.ExecuteScalar()).Split('|').ToList();
    }
}