真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Smobiler控件的使用:ListView的數(shù)據(jù)綁定及實(shí)現(xiàn)多選-創(chuàng)新互聯(lián)

環(huán)境
SmobilerDesigner 4.7
Visual Studio 2010以上

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括萬全網(wǎng)站建設(shè)、萬全網(wǎng)站制作、萬全網(wǎng)頁制作以及萬全網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,萬全網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到萬全省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

正文

listview綁定數(shù)據(jù)

打開Visual Studio ,新建一個SmobilerApplication項(xiàng)目。從工具箱中找到ListView,CheckBox,Label,Panel等控件拖入到SmobilerFrom1.cs,布局如圖?

Smobiler控件的使用:ListView的數(shù)據(jù)綁定及實(shí)現(xiàn)多選

再新建一個SmobilerUserControl類,暫且命名為SmobilerUserControl1.cs,設(shè)置Size為(300,50),再拖入CheckBox,Label,Panel控件,CheckBox的DataMember設(shè)為id,Modifiers設(shè)為public,label的DisplayMember設(shè)為lab,Modifiers設(shè)為public,panel的Touchable設(shè)為true,(panel的Touchable設(shè)為true時點(diǎn)擊可以觸發(fā)press事件)如圖?

Smobiler控件的使用:ListView的數(shù)據(jù)綁定及實(shí)現(xiàn)多選

在設(shè)計器中打開SmobilerForm1.cs,點(diǎn)擊listView1,設(shè)置TemplateControlName為SmobilerUserControl1

Smobiler控件的使用:ListView的數(shù)據(jù)綁定及實(shí)現(xiàn)多選

最后在窗體的load事件中綁定數(shù)據(jù)源

private void SmobilerForm1_Load(object sender, EventArgs e)
???????? {
???????????? DataTable dt = new DataTable();
???????????? dt.Columns.Add("id");
???????????? dt.Columns.Add("lab");
???????????? for (int i = 0; i < 5; i++)
???????????????? dt.Rows.Add(i, "圖書" + i.ToString());
???????????? listView1.DataSource = dt;
???????????? listView1.DataBind();
???????? }

注:控件的DataMember和DisplayMember有什么不同呢?DataMember是值綁定字段,DisplayMember是顯示綁定字段,簡單來說就是DisplayMember綁定的值會顯示,DataMember則不顯示,本例中的label的displayMember綁定后值是賦給了Text屬性;checkbox的DataMember綁定后在界面上顯示,需要通過checkbox.BindDataValue來獲取。

實(shí)現(xiàn)全選

思路:借助list來存儲勾選項(xiàng),listview中的行項(xiàng)每勾選一個就往list插入一條記錄,取消勾選則從list中移除記錄,當(dāng)list.Count與listview的行數(shù)相同是則表示全部選擇

1.SmobilerForm1.cs中代碼

List selectItem = new List();//通過這個list來記錄已勾選的數(shù)據(jù)行id

///


???????? /// 添加勾選項(xiàng)
???????? ///

???????? ///
???????? public void AddSelectItem(string item)
???????? {
???????????? if (!selectItem.Contains(item))
???????????????? selectItem.Add(item);
???????? }
???????? ///
???????? /// 取消選擇
???????? ///

???????? ///
???????? public void RemoveSelectItem(string item)
???????? {
???????????? if (selectItem.Contains(item))
???????????????? selectItem.Remove(item);
???????? }
???????? ///
???????? /// 改變checkbox狀態(tài)
???????? ///

???????? public void changeState()
???????? {
???????????? if (selectItem.Count == listView1.Rows.Count)//selectItem的數(shù)量和listview.Rows的數(shù)量一致表示全選
???????????????? checkBox1.Checked = true;
???????????? else
???????????????? checkBox1.Checked = false;
???????? }
???????? ///
???????? /// checkbox點(diǎn)擊事件
???????? ///

???????? ///
???????? ///
???????? private void checkBox1_CheckedChanged(object sender, EventArgs e)
???????? {
???????????? if (checkBox1.Checked)
???????????? {
???????????????? foreach (ListViewRow row in listView1.Rows)//遍歷listview.Rows
???????????????? {
???????????????????? //(SmobilerUserControl1)row.Control即listview行模板
???????????????????? ((SmobilerUserControl1)row.Control).checkBox1.Checked = true;//改變listview模板里中的checkbox值
???????????????????? AddSelectItem(((SmobilerUserControl1)row.Control).checkBox1.BindDataValue.ToString());//獲取模板類中的checkbox的DataMember
???????????????? }

}
???????????? else
???????????? {
???????????????? foreach (ListViewRow row in listView1.Rows)
???????????????? {
???????????????????? ((SmobilerUserControl1)row.Control).checkBox1.Checked = false;
???????????????????? RemoveSelectItem(((SmobilerUserControl1)row.Control).checkBox1.BindDataValue.ToString());
???????????????? }
???????????? }
2.SmobilerUserControl1.cs中,模板類使用(SmobilerForm1)this.Form來調(diào)用SmobilerForm1的屬性、方法,將數(shù)據(jù)傳給SMobilerForm1

private void checkBox1_CheckedChanged(object sender, EventArgs e)
???????? {
???????????? SmobilerForm1 frm = (SmobilerForm1)this.Form;//獲取listview所在窗體
???????????? if (checkBox1.Checked)
???????????? {
???????????????? frm.AddSelectItem(checkBox1.BindDataValue.ToString());
???????????? }
???????????? else
???????????? {
???????????????? frm.RemoveSelectItem(checkBox1.BindDataValue.ToString());
???????????? }

frm.changeState();
???????? }
???????? ///


???????? /// panel點(diǎn)擊事件
???????? ///

???????? ///
???????? ///
private void panel1_Press(object sender, EventArgs e)
???????? {
???????????? SmobilerForm1 frm = (SmobilerForm1)this.Form;
???????????? frm.label3.Text = label1.Text;//數(shù)據(jù)傳給SMobilerForm1
???????? }
運(yùn)行效果

Smobiler控件的使用:ListView的數(shù)據(jù)綁定及實(shí)現(xiàn)多選

彩蛋

listview實(shí)現(xiàn)單雙行間隔色

在4.7版本中,可以在ListView的RowBind事件中,通過設(shè)置 e.Row.Control.BackColor來設(shè)置不同的顏色,RowBind事件是在行綁定后發(fā)生,具體見(https://www.smobiler.com/Help/html/E_Smobiler_Core_Controls_ListView_RowBind.htm),代碼如下

bool flag = true;//通過flag判斷單雙行
???????? private void listView1_RowBind(object sender, ListViewTemplateBindEventArgs e)
???????? {
???????????? if (flag)
???????????? {
???????????????? e.Row.Control.BackColor = System.Drawing.Color.White;//第0行開始,偶數(shù)白色單數(shù)藍(lán)色
???????????????? flag = !flag;
???????????? }
???????????? else
???????????? {
???????????????? e.Row.Control.BackColor = System.Drawing.Color.SkyBlue;
???????????????? flag = !flag;
???????????? }
???????? }
最終效果

Smobiler控件的使用:ListView的數(shù)據(jù)綁定及實(shí)現(xiàn)多選

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁題目:Smobiler控件的使用:ListView的數(shù)據(jù)綁定及實(shí)現(xiàn)多選-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://weahome.cn/article/ceiijj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部