前一陣子,我的項目中需要用到把資料庫中的一個欄位根據","符號分割成多列顯示在GridView控制項中,折騰了半天再搞好。呵呵,看來是本人水平有限,還需要多多努力 ;)
protected void bind_usb() //綁定USB列表到Gridview
{
DataTable m_usb_Table = new DataTable();
m_usb_Table.Columns.Add(new DataColumn("usbinfo", typeof(System.String)));
m_usb_Table.Columns.Add(new DataColumn("usbidinfo", typeof(System.String)));
m_usb_Table.Columns.Add(new DataColumn("usbflag", typeof(System.String)));
ArrayList usbinfo_List = new ArrayList();
ArrayList usbidinfo_List = new ArrayList();
ArrayList usbflag_List = new ArrayList();
string usbinfo_str = MyTable.Rows[0]["usbinfo"].ToString(); //從資料來源 MyTable 中取得字串
if (usbinfo_str == "" || usbinfo_str == null) return;
string usbidinfo_str = MyTable.Rows[0]["usbidinfo"].ToString();
string usbflag_str = MyTable.Rows[0]["usbflag"].ToString();
string[] usbinfo_Array = usbinfo_str.Split(',');
foreach (string usbinfo_Sub in usbinfo_Array)
{
usbinfo_List.Add(usbinfo_Sub);
}
string[] usbidinfo_Array = usbidinfo_str.Split(',');
foreach (string usbidinfo_Sub in usbidinfo_Array)
{
usbidinfo_List.Add(usbidinfo_Sub);
}
string[] usbflag_Array = usbflag_str.Split(',');
foreach (string usbflag_Sub in usbflag_Array)
{
usbflag_List.Add(usbflag_Sub);
}
DataRow MyRow;
for (int i = 0; i < usbinfo_List.Count; i++)
{
MyRow = m_usb_Table.NewRow(); //將 ArrayList 的值賦給 m_cpu_Table.NewRow行
MyRow["usbinfo"] = usbinfo_List[i].ToString();
MyRow["usbidinfo"] = usbidinfo_List[i].ToString();
MyRow["usbflag"] = usbflag_List[i].ToString();
m_usb_Table.Rows.Add(MyRow);
}
GridView usbGrid = this.Hard_DetailsView.FindControl("usbGrid") as GridView;
//usbGrid.Visible = false;
usbGrid.DataSource = m_usb_Table;
usbGrid.DataBind();
}
顯示效果:
(注釋:部分顯示不是亂碼,是日語)
事隔多日,今天偶然看見Teracy_Joy 的blog裡面也有相關代碼,真是相見恨晚。也罷,自己編寫的能漲能力(但沒有漲工資,TMD小日本)。
引用如下:
功能:在一個文字框中輸入多個資料,類似圖中資料:
要在伺服器端寫代碼將這些字串分開後寫到一個list裡面去,然後在將這個list拼字成SQL語句,弄了好久,終於有了結果,處理起來還真的有點麻煩,要是裡面的資料都是整型的話可能好處理一點,現在把每一步的方法帖出來,以後好參考參考:
點擊查詢時要做的事
1 protected void btnSel_Click(object sender, EventArgs e)
2 {
3 string strCode = txtManyCode.Text.Trim();
4
5 string[] ArrayStr = strCode.Split(',');
6
7 List<string> listStr = new List<string>();
8
9 foreach (string str in ArrayStr)
10 {
11 listStr.Add(str);
12 }
13 DataTable dt = AcerPromotionManager.getWillDeletePromotionCode(listStr);
14
15 dgAcer.DataSource = dt;
16 dgAcer.DataBind();
17
18 }
將那個listStr傳到這個裡面來構建一個'方法法','fdas','fdsafd','fdsa'
1 public static string GetStringFromStringList(List<string> list)
2 {
3 string strList = string.Empty;
4 foreach (string str in list)
5 {
6 strList += (strList.Length == 0 ? "" : "','") + str.ToString();
7
8 }
9 return "'" + strList + "'";
10
11 }
這樣就可以了,把要得到的字串就可以提取出來了,另外還一個就是要是資料為int型的話只要調用:
List 類型的方法
1 public static string GetStringFromIntList(List<int> list)
2 {
3 string strList = string.Empty;
4
5 foreach (int id in list)
6 {
7 strList += (strList.Length == 0 ? "" : ",") + id.ToString();
8 }
9
10 return strList;
11 }
調用方法一樣的,都比較簡單的。
把輸入的資料中包含有單雙引號的字元去掉(以及別的特殊字元)的方法:
public static string GetFormatNameForImgAlt(string str)
{
return str.Replace("'", "’").Replace("\"", """));
}
發現都是湖南人,組合在一起讓大家和自己都一起相互學習。多多指教!