国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

TaskMgr C#技術(shù)拾遺

2019-11-17 03:14:11
字體:
供稿:網(wǎng)友

TaskMgr C#技術(shù)拾遺

1. DataGridView和ContextMenuStrip的綁定是發(fā)生在DataGridView的CellMouseClick事件,在事件中指定右鍵菜單彈出;

2. DataGridView的列名稱(columnName)的指定是(name)屬性,如果沒有手工指定,那么將會默認(rèn)為DataPRopertyName + 列類型(比如idTextBoxColumn),所以需要手工指定一下:

image

或者是在load方法中同步一下:

private void frmTaskList_Load(object sender, EventArgs e){    …        foreach (DataGridViewColumn item in this.dgTaskList.Columns)        {            item.Name = item.DataPropertyName;        }    …}

3. 父類事件是不能直接讓子類調(diào)用(但是可以通過實(shí)例化之后的子類來為父類的事件賦值),于是需要讓父類通過方法封裝一下于是有了:

public class BaseEditForm : Form{   …
   public event RefreshList RefreshParent;   public void OnRefreshParent()   {      if (this.RefreshParent != null)      {         this.RefreshParent();      }
   }
   …}
 
public partial class frmEditProject : BaseEditForm{    …
    private void btnOK_Click(object sender, EventArgs e)    {        …
        base.OnRefreshParent();        this.Close();    }    …}

 

4. Combox的綁定,如果綁定的是List對象,需要先制定displayMember和ValueMember,然后再指定DataSource,否則將會報錯:Cannot bind to the new display member.

 

this.cbProj.DisplayMember = "ProjectName";this.cbProj.ValueMember = "Id";this.cbProj.DataSource = ProjectService.GetProjects();this.cbProj.SelectedValue = task.ProjId;
另外,如果是要根據(jù)“value”選中下拉框某項(xiàng),只需要設(shè)置selectedValue即可。

 

5. 循環(huán)刪除

方式一:將刪除內(nèi)容放置到一個新的刪除列表中,然后遍歷刪除列表中的項(xiàng),從真正的列表中刪除該項(xiàng)(避免直接遍歷真正list刪除導(dǎo)致缺位情況);

方式二:倒敘刪除

 

6. LinqToSql的Join

切記,linqtosql的的Join,左側(cè)一定是關(guān)聯(lián)表,右側(cè)才是本次Join的表,如下:

var query = from ws in context.workflowsequeuece             join w in context.workflow on ws.WFID equals w.Id            join t in context.task on ws.TaskId equals t.Id            join e in context.employee on ws.EmpID equals e.Id            where ws.TaskId == m.Id            select …

6.Linq返回實(shí)體類

public static List<BizEmployee> GetMemebersByProjId(int pProjId){    Model1Container container = DbUtil.GetDbContainer();    var query = from t in container.project_employee where t.ProjId == pProjId                 select new BizEmployee(t.EmpId.Value, t.EmpName);    return query.ToList<BizEmployee>();}

返回異常:Only parameterless constructors and initializers are supported in LINQ to Entities.

修改為:

public static List<BizEmployee> GetMemebersByProjId(int pProjId){    Model1Container container = DbUtil.GetDbContainer();    var query = from t in container.project_employee                where t.ProjId == pProjId                select new BizEmployee { Id = t.EmpId.Value, EmpName = t.EmpName };    return query.ToList<BizEmployee>();}
問題解決。

 

7. DataGridView性能情況

后來發(fā)現(xiàn)是因?yàn)镈ataSouce(List<T>)中綁定了一個Workflow對象,去掉這個對象(不賦值)即可輕松綁定。

 

8. Settings

考慮如何實(shí)現(xiàn)Winform的“記住用戶名密碼”,后來發(fā)現(xiàn)使用Settings可以實(shí)現(xiàn):

直接在Settings.setting中添加內(nèi)容:

imageimage

添加了Settings內(nèi)容后,直接就會在Settings.Default中體現(xiàn)出來;

賦值方式注意最后要Save):

Settings.Default.Mail = mail;Settings.Default.PassWord = pwd;Settings.Default.Save();

取值方式

this.txtPwd.Text = Settings.Default.Password;this.txtUserName.Text = Settings.Default.Mail;

 

評價:簡單易行,比之向xml以及ini文件寫還要去打開文件、關(guān)閉文件,要方便得多。

 

9. MDI父窗體的關(guān)閉

如果直接關(guān)閉MDI父窗體,將會導(dǎo)致一個問題,主線程沒有關(guān)閉,這個時候需要:

private void frmParent_FormClosing(object sender, FormClosingEventArgs e){    application.Exit();}

10.Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.

碰到了兩次這種情況:

1.調(diào)用共通方法,傳入的entity所定義的類型錯了SetEntityType()發(fā)放有誤;

2.是因?yàn)楸斫Y(jié)構(gòu)主鍵沒有設(shè)置自增長,Id也沒有賦值導(dǎo)致。

 

11. DataGridView的ContextStrip屬性和右鍵CellMouseClick失效

1. 如果為DataGridview指定了ContextMenuStrip屬性,那么右鍵的話,DataGridView將不會再走自定義的CellMouseClick事件方法體,而是走內(nèi)置的展示ContextStript事件;所以如果需要在右鍵事件中做額外處理(比如獲取當(dāng)前指定的行),那么就不要為DataGridView指定ContextMenuStrip屬性了。

2. DataGridView的PropertyName和(Design)Name默認(rèn)是不一致的,而且通過列名索引使用的是(Design)Name,所以需要對其進(jìn)行手工設(shè)置,或者存取的時候按照(Design)Name來進(jìn)行獲取。

image

 

EntityFramework

1. Requested value 'Geometry' was not found

幾乎一個晚上都在調(diào)整這個問題,后來發(fā)現(xiàn)是因?yàn)閁pdater工程,被我重定向到了UI/bin/Debug之后,產(chǎn)生的副產(chǎn)物,后來從定向回到了自己的bin目錄下,問題完美解決。

MySQL

Unable to convert MySQL date/time value to System.DateTime

后來發(fā)現(xiàn)是因?yàn)镸ysql的datetime字段值為0-00000-0,對于空值的日期處理有問題,后來填充上了真實(shí)日期后完美解決此問題;


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 咸阳市| 阳谷县| 铜陵市| 丰城市| 呼图壁县| 张家界市| 安西县| 界首市| 杭锦后旗| 临海市| 江华| 灵武市| 邹平县| 青铜峡市| 清水县| 久治县| 平顶山市| 乡宁县| 临漳县| 二连浩特市| 张北县| 农安县| 六安市| 托克逊县| 宁南县| 安达市| 微博| 金山区| 长寿区| 英超| 怀集县| 武强县| 南川市| 嘉黎县| 桃园市| 彩票| 汝阳县| 桐庐县| 兰坪| 宜城市| 安新县|