TOP

[C#]取得.Net 3.5 ListView 樣版內的欄位值方式

取得.Net 3.5 ListView 樣版內的欄位值方式





<asp:ListView ID="ListView1" runat="server" style="font-size: small"
     onitemdatabound="ListView1_ItemDataBound">
     <ItemTemplate>
 <asp:Label ID="label1 e" runat="server"></asp:Label>  
     </ItemTemplate>
</asp:ListView>

    protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
//先將e.Item存放至 dataItem內
        ListViewDataItem dataItem = (ListViewDataItem)e.Item;
//利用FindControl取得欄位資料
        Label label1 = (e.Item.FindControl("label1") as Label);
//將取得listview內label1的資料存至strlabel1
        string strlable1 = DataBinder.Eval(dataItem.DataItem, "label1").ToString();
    }




參考資料:http://iambigd.blogspot.tw/2010/07/listview-itemdatabound.html
TOP

[C#]取得該頁QueryString的屬性方式

取得單一個QueryString的方式

string strConferenceID = Request["ConferenceID"];

取得一整串QueryString的方式

QueryStr = this.Page.ClientQueryString;


    public string QueryStr
    {
        get
        {
            return (string)ViewState["QueryStr"];
        }
        set
        {
            ViewState["QueryStr"] = value;
        }

    }
TOP

[C#]3.5以下的版本GridView無資料時顯示Header


VS2008為 .Net 3.5版本,還沒有支援GridView無資料時顯示Header的屬性
利用障眼法的方式達成相同功能,雖然不是很好,但比較簡單。

1.建立一個新的DataTable
            DataTable dtDataTemp = new DataTable();
            dtDataTemp.Columns.Add("名稱");
            dtDataTemp.Columns.Add("名稱");

2.建立一個新的DataView 並且設定來源為DataTable
            DataView dvDataTemp = dtDataTemp.DefaultView;

3.設定一筆新的DataRow 資料
            DataRow oDR = dvDataTemp.Table.NewRow();

4.允許資料列的欄位可以是DBNULL值
            foreach (DataColumn item in oDR.Table.Columns)
            {
                item.AllowDBNull = true;
            }

5.Datatable 加入資料列
            dvDataTemp.Table.Rows.Add(oDR);

6.GridView設定來源資料及DataBind
            GridView1.DataSource = dvDataTemp;
            GridView1.DataBind();

7.隱藏第一筆資料
            GridView1.Rows[0].Visible = false;

參考資料:
http://kuomingwang.blogspot.tw/2010/03/c-datatable-datagridview.html
http://stackoverflow.com/questions/2040107/show-header-of-a-empty-gridview-for-datasource-is-listdata
http://blog.sina.com.tw/jspcity/article.php?pbgid=55389&entryid=576147
http://www.dotblogs.com.tw/atowngit/archive/2010/08/12/17160.aspx
TOP

[C#]DataSet 資料存到Datatable

        DataTable dt = ds.Tables["資料表名稱"];
TOP

[C#]GridView內的DropDownList當Button方式使用

GridView內的DropDownList當button方式使用

這不是一個很好的使用方式,選取DropDownList值時模擬Button的事件或執行JavaScript使用。
最好不要這樣子使用,真的會被搞死。

以下遇到的方式都是需要用JavaScript去模擬的或控制

1.DropDownList選擇第1個值時,需要利用JavaScript開啟新的一頁,並將資料傳送過去。

使用ScriptManager.RegisterStartupScript方式呼叫JavaScript


strResult = "網址及參數值";

string newWindowSet = "height=600,width=800,toolbar=no,menubar=no,scrollbar=yes,location=yes,directories=no";

ScriptManager.RegisterStartupScript(this, this.GetType(), "名稱",
                "window.open('" + strResult + "','名稱','" + newWindowSet + "');", true);


2.DropDownList選擇第2個值時,需要有confirm的對話視窗讓使用者選擇「Yes」或「No」,才可以執行事件。
目前我找不到DropDownList可以這樣子處理的方式,因為DropDownList只能對一個物件做控制,不能對每一個值做onclick或onchange的控制,因此建立一個Button去模擬相同的功能。
且因為要使用Button的功能,不能用Visible= flase關閉button,所以只能將Button在畫面隱藏起來。

<span style="DISPLAY:none">
 <asp:Button ID="btnDel" runat="server" CausesValidation="false"      Text="Delete"
                                        OnClientClick='return confirm(this.getAttribute("RecordDelMessage"))'
                                        onclick="btnDel_Click" />
</span>

ScriptManager.RegisterStartupScript(Page, Page.GetType(), "btn_Del", "{ document.getElementById('" + btnDel.ClientID + "').click();}", true);

利用ScriptManager.RegisterStartupScript方式呼叫JavaScript執行btnDel的click,觸發OnClientClick的事件。

參考資料:
http://felixhuang.pixnet.net/blog/post/24392024-%5Bjavascript%5D-%E7%94%A8-javascript-%E5%9F%B7%E8%A1%8C-asp.net-server-button-(
http://king971119.blogspot.tw/2011/08/jquery-javascript-button-click.html
http://www.cnblogs.com/wzg0319/archive/2011/03/25/1995772.html
http://www.wretch.cc/blog/theone114/21735441
http://blog.yam.com/wewa85/article/29059195