[英]Cannot convert array list to string
我有Repeater绑定方法,当Model_Id传递给该方法时,该方法通过存储过程从数据库中检索数据,它还会检索数据;当用户多次选择DDL时,用户也可以重复转发器不止一次。我做了代码,并添加了所有Model_Ids哪个用户从数组列表中的DDL中选择但出现错误
无法将数组列表转换为字符串值:
protected void Add_Click(object sender, ImageClickEventArgs e)
{
ArrayList Array = new ArrayList();
Array.Add(DDLModel.SelectedValue);
DLHome.DataSource = Cls.GetModelName(Array);
DLHome.DataBind();
}
public DataTable GetModelName(string Model_Id)
{
using (SqlConnection conn = Connection.GetConnection())
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetComparisonModel";
SqlParameter ParentID_Param = cmd.Parameters.Add("@Model_Id", SqlDbType.Int);
ParentID_Param.Value = Model_Id;
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(dt);
return dt;
}
}
除了其他人所说的关于ArrayList和方法签名中的字符串之间的数据类型不匹配之外,您似乎也不希望实际上是字符串,因为您将其作为int参数传递给了存储过程。
我建议在第一种方法中,您要执行一个int.Parse(或您认为合适的int.TryParse)并将其作为int传递给该方法。
错误在这里:
ArrayList Array = new ArrayList(); // Declare Array of type ArrayList
Array.Add(DDLModel.SelectedValue);
DLHome.DataSource = Cls.GetModelName(Array); // Pass Array to method that expects a string
您正在尝试将ArrayList
传递给方法GetModelName
。 此方法需要一个string
参数。
您的方法public DataTable GetModelName(string Model_Id)
需要一个在签名中定义的字符串。
您正在尝试将ArrayList传递给方法Cls.GetModelName(Array);
您应该在IDE中对此有所警告(以及有关名为Array
的变量)的警告。
如果这是确切的代码,您肯定会遇到编译器错误吗? GetModelName
将字符串作为参数,并且您要传入ArrayList
类型。
如果要将ID数组转换为字符串,只需使用ArrayList的扩展方法,该方法将遍历每个项目并返回字符串值,例如
public static string ToArrayString(this ArrayList list)
{
return String.Join(", ", Cast<string>().ToArray());
}
查看您的代码,由于您可以直接将SelectedValue
直接传递给Bind方法,因此ArrayList
用法似乎可以忽略不计。
顺便说一句,您的代码可能如下所示:
using (SqlConnection conn = Connection.GetConnection())
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetComparisonModel";
cmd.Parameters.Add("@Model_Id", SqlDbType.Int).Value = Model_Id;
DataTable dt = new DataTable();
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
return dt;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.