2013年6月25日 星期二

{C#} TextBox ReadOnly Postback取不到值

Control中,如使用ReadOnly,在Post back時會取不到值的問題

.net Control--
<asp:TextBox ID="abc" runat="server"  Readonly=true ></asp:TextBox>
html Control--
<input type="text" id="abc" name="abc" readonly="readonly" />

解決方式:
在Load Page 時將控制項屬性加入,
不在.aspx就先設定,可避免Post Back 時Viewstate Control值不被改變而導致取不到回寫值
 if (!IsPostBack)
            {
                txtReceivingDate.Attributes.Add("readonly", "readonly");
            }


參考資訊:
http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/10/21/textbox-readonly-and-disabled.aspx
http://www.dotblogs.com.tw/newmonkey48/archive/2009/11/08/11479.aspx

2013年6月5日 星期三

{C#} yield 使用

Yield
Foreach 中使用

//逐一帶出Enumerable 內資料 並回傳IEnumerable<class>  型態結果
foreach (var aa in IEnumerable)
{
    yield return new class{
       orderNo=aa.orderNo,
       ProductName=aa.ProductName
    }
}

//只帶回第一筆資料
foreach (var aa in IEnumerable)
{
    return new class{
       orderNo=aa.orderNo,
       ProductName=aa.ProductName
    }
}

//當訂單號碼為1,就會結束迴圈
foreach (var aa in IEnumerable)
{
    if(aa.OrderNo==1)
       yield break;
}

PS.
1.Yield break;可在Try catch 中,但不可在Finally中
2.Yield return;不可在Try catch中,但可在Try-finally 的Try中

參考資訊:
http://www.dotblogs.com.tw/hatelove/archive/2012/05/10/introducing-foreach-ienumerable-ienumerator-yield-iterator.aspx
http://msdn.microsoft.com/zh-tw/library/9k7k7cf0.aspx
http://www.dotblogs.com.tw/dc690216/archive/2010/02/19/13697.aspx

2013年6月4日 星期二

{Linq} 相同Group 中資料分隔

Data:
Name No Qty
A        1     50
A        2     60
B       12    10
C       13    70

Result:
A  1,2  110
B   12    10
C   13    70


var groupResult = data.ToLookup(s => s.Name);
string symbol=",";
foreach (var c in groupCPSPNResult)
{
    result.Add(new
   {
      Name= c.Key.Name,
      No= string.Join(symbol, c.Select(s => s.No).ToArray()),
      Total= c.Sum(s => s.Qty)
  });
}


參考資訊:
http://www.dotblogs.com.tw/dyco/archive/2010/08/25/17401.aspx