一、PopList控件實現通用選擇難點:
1.1通用加載過程;一層加與兩層加載;
1.2選擇結果分配;
二、過程實現
2.1數據加載過程的實現
public static Boolean PopListCommAddList(PopList Vlist, String GSQL, String GItrmFld, String LSQL, String LItrmFld, String GrpText, Boolean MulSel, Boolean SngSelMode )
{
//功能:PopList通用加載過程
Boolean blnOK = false;
string MTTYItem = "",SSQL="";
if (GSQL.Trim() == "") //只有一個Group GrpText
{
PopListGroup plg = new PopListGroup() { Title = "" + GrpText, TitleVisible = true };
SSQL = LSQL;
DataSet dsCangzhi = SqlHelper.Ex_Query(LSQL);
if (dsCangzhi.Tables[0].Rows.Count > 0)
{
for (int J = 0; J <= dsCangzhi.Tables[0].Rows.Count - 1; J++)
{
MTTYItem = dsCangzhi.Tables[0].Rows[J][LItrmFld].ToString();
plg.Items.Add(new PopListItem("" + MTTYItem));
}
}
Vlist.Groups.Add(plg);
}
else
{
Vlist.Groups.Clear();
Vlist.MultiSelect = MulSel; //可以多選擇
Vlist.SingleSelectMode = SngSelMode; //去掉單選模式
DataSet dsFirstZM = SqlHelper.Ex_Query(GSQL);
if (dsFirstZM.Tables[0].Rows.Count > 0)
{
for (int I = 0; I <= dsFirstZM.Tables[0].Rows.Count - 1; I++)
{
MTTYItem = dsFirstZM.Tables[0].Rows[I][GItrmFld].ToString();
PopListGroup plg = new PopListGroup() { Title = "" + MTTYItem, TitleVisible = true }; //pl.Groups.
//"SELECT DEF_STOCKADD_ID+'-'+DEF_STOCKADD_DESC AS [ADDLIST] FROM DEF_STOCKADD WHERE DEF_STOCKADD_ID LIKE '" + MTTYItem + @"%' AND DEF_STOCKADD_TYPE='1' ORDER BY DEF_STOCKADD_ID"
SSQL = LSQL.Replace("@GPID", MTTYItem);
DataSet dsCangzhi = SqlHelper.Ex_Query(LSQL);
if (dsCangzhi.Tables[0].Rows.Count > 0)
{
for (int J = 0; J <= dsCangzhi.Tables[0].Rows.Count - 1; J++)
{
MTTYItem = dsCangzhi.Tables[0].Rows[J][LItrmFld].ToString();
plg.Items.Add(new PopListItem("" + MTTYItem));
}
}
Vlist.Groups.Add(plg);
}
}
}
return blnOK;
}
2.2選擇結果的分配
2.2.A,加載過程要定義選擇窗口標題
private void btnADD_Press(object sender, EventArgs e)
{
string ASQL= "SELECT DEF_STOCKADD_ID+'-'+DEF_STOCKADD_DESC AS [ADDLIST] FROM DEF_STOCKADD INNER JPDYL_ADDR ONOIN DEF_STOCKADD.DEF_STOCKADD_ID=PDYL_ADDR.PDYL_ADDRID WHERE PDYL_ADDR.PDYL_M_ID= '" + PDID + @"' AND DEF_STOCKADD.DEF_STOCKADD_TYPE='1' ORDER BY DEF_STOCKADD_ID"
SqlHelper.PopListCommAddList(this.pL1,"", "", ASQL, "ADDLIST", "倉址列表",false,true);
pL1.Title = "倉址選擇";
pL1.Show();
}
2.2.B,選擇結果分配:通過識別標題
private void pL1_Selected(object sender, EventArgs e)
{
switch(pL1.Title)
{
case "倉址選擇": //倉址選擇 單選
txtADDR.Text = this.pL1.Selection.Text;
break;
case "":
break;
}
}