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