[英]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.