2015年6月27日 星期六

asp.net 檔名長度限制

目前測試結果:
/Custcan_SearchCust.aspx   ---OK
/Custcancel_SearchCust.aspx  --- miss  (IIS 7.0 會反彈此檔案已不見)
-----
Custcan_SearchCust-->18 碼 OK 的
1-20碼內是允許的範圍,超過20碼(21碼)即產品找不到檔案的訊息
所以設計取檔名時,還是要考慮一下檔名長度限制問題!!

2015年6月24日 星期三

asp.net 子視窗執行父視窗

參考1
參考2
----
還真方便!! 不過在使用上,須注意不可隱藏或是停用元件!! 不然怎傳也不會動!!

2015年6月23日 星期二

何取得GridView裡TextBox的和RadioButton的值

參考引用來源:何取得GridView裡TextBox的和RadioButton的值
--
  Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

        If e.Row.RowType = DataControlRowType.DataRow Then
            CType(e.Row.FindControl("TextBox1"), Textbox).Text=111
        End If

    End Sub

asp.net 網頁資料輸出轉為Excel檔案時數字資料強制為文字呈現(含其他mso支援格式轉換)

請參考來源:[CSS]網頁資料輸出轉為Excel檔案時數字資料強制為文字呈現(含其他mso支援格式轉換)
---
可解決一先 0 開頭被 excel 吃掉的問題

asp.net gridview master detail (vb.net也適用)

查了一整天 gridview master detail 的作法,都不是我要的 ...=.=
主要我是要運用在匯出 excel , word , 網路上的範例都屬呈現的效果;而非針對匯出
底下運用了一些作法,所呈現的 M / D GridView  (方法已研究出來,將準備加入系統內)
補上:excel , word 的匯出
---



export grid to excel in asp.net when the grid in ContentPlaceHolder

---
   using System.IO;
   public override void VerifyRenderingInServerForm(Control control)
{
    /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
       server control at run time. */
}



protected void btnExoprtExcel_Click(object sender, EventArgs e)
{
    Response.ClearContent();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Details.xls"));
    Response.ContentType = "application/ms-excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    GV1.AllowPaging = false;
    //Change the Header Row back to white color
    GV1.HeaderRow.Style.Add("background-color", "#000000");
    //Applying stlye to gridview header cells
    for (int i = 0; i < GV1.HeaderRow.Cells.Count; i++)
    {
        GV1.HeaderRow.Cells[i].Style.Add("background-color", "#000000");
    }
    int j = 1;
    //This loop is used to apply stlye to cells based on particular row
    foreach (GridViewRow gvrow in GV1.Rows)
    {

        if (j <= GV1.Rows.Count)
        {
            if (j % 2 != 0)
            {
                for (int k = 0; k < gvrow.Cells.Count; k++)
                {
                    gvrow.Cells[k].Style.Add("background-color", "#FFFFFF");
                }
            }
        }
        j++;
    }
    GV1.RenderControl(htw);
    Response.Write(sw.ToString());
    Response.End();
}

asp.net gridview master detail

請參考來源:Nested GridView in ASP.NET
--

2015年6月22日 星期一

mssql master detail

參考引用來源:(TRANSACT SQL) how to create Master-Detail in a row using sql?
--
SELECT ID AS Column1, NAME AS Column2, Address AS Column3, ID AS SortColumn1, 1 AS SortColumn2
UNION
SELECT '', PHONE, EMAIL, ID AS SortColumn1, 2 AS SortColumn2
ORDER BY SortColumn1, SortColumn2

Display Master/Details output with Nested GridView Controls

Display Master/Details output with Nested GridView Controls
--

Creating a Master Detail View in Excel 2007

MSDN:Creating a Master Detail View in Excel 2007
--

OBOUT - ASP.NET Grid - Home (免費的 Grid 控件)

OBOUT - ASP.NET Grid - Home
--
很多元件唷!! 都免費的

asp.net gridview master detail

 請參考來源:Build Master Detail GridView using jQuery in ASP.Net
--

Web 進銷存

asp.net master detail invoicing system

Web 進銷存雛型已出來了!!
基本表都還OK,麻煩的還是在 master detail 的架構!!
一直開發 windows ap , 本次鑽研並開發 Web asp.net ; 雖然未使用 MVC 框架開發,但我還是喜歡使用傳統非MVC開發,較符合原本的 windows ap 開發概念!
底下是完成 master detail 單據主檔/明細的功能!
----

Display Images in GridView from Sql Server Database Table Using Asp.net C# VB.Net

請參考來源
---
這一個code 好!! 找了一大堆,就這一個OK

2015年6月20日 星期六

asp.net TextBox 值相加

參考來源:[習題]三個數字相加....(使用TextBox,很基礎的題目)
---
只要加入:
1. TextBox控制項加入 AutoPostBack="true"
2.
Protected Sub TextBox3_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
         Dim sum As Integer =  CInt(TextBox3.Text) + CInt(TextBox2.Text) + CInt(TextBox1.Text)
         Label1.Text = String.Format("{0:C}", sum)
         '--轉換成貨幣格式
End Sub

給Textbox填值,PostBack後卻值卻不見的問題

參考引用來源:請教一個JavaScript給Textbox填值,PostBack後卻值卻不見的問題
--
重點在這一段:
Code Snippet
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.Request.Form("TextBox1") IsNot Nothing Then
            TextBox1.Text = Page.Request.Form("TextBox1")
        End If
  End Sub

2015年6月16日 星期二

asp.net 父子視窗傳值

參考引用來源:父子視窗傳值--
父子視窗傳值
承前面一篇的民國年份之月曆開發,在點選完日期後當然要將日期傳回至本來的父視窗,這時就面臨傳值的問題,以下為透過javascript的2個小方法。
(假設父視窗叫做parent.aspx,用來放置小月曆的子視窗叫做child.aspx)

1.方法一
開啟方式:window.open
傳值方式:opener

開啟方式ex:window.open('child.aspx','月曆選取器','width=300,height=300')
傳值方式ex:opener.form1.SelectDay.value = day;
(form1是父視窗的form名稱,SelectDay是父視窗裡面的一個text input,day就是子視窗小月曆提供的值)


2.方法二
開啟方式:window.showModalDialog
傳值方式:window.dialogArguments.form1.SelectDay.value = day;

開啟方式ex:window.showModalDialog('child.aspx',window,'dialogWidth:300;dialogHeight:300;')
傳值方式ex:window.dialogArguments.form1.SelectDay.value = day;
(form1是父視窗的form名稱,SelectDay是父視窗裡面的一個text input,day就是子視窗小月曆提供的值)

asp.net showModalDialog

asp:Button ID="btn_select" runat="server" Text="選擇權限/新增群組"
onclick="btnSelect_Click" Width="133px" OnClientClick="showModalDialog('select_group.aspx',window,'dialogWidth:400px; dialogHeight:300px; center:yes; status:0;')" />

asp.net中Bind和Eval的有什麼區別

TemplateField模組中Bind和Eval的有什麼區別
eval()方法在運行時使用反射執行後期綁定計算,因此與標準的ASP.NET數據綁定方法bind相比,會導致性能明顯下降。它一般用在綁定時需要格式化字符串的情況下。多數情況盡量少用此方法
 
 
  Eval 方法是靜態(只讀)方法,該方法採用數據字段的值作為參數並將其作為字符串返回。 Bind 方法支持讀/寫功能,可以檢索數據綁定控件的值並將任何更改提交回數據庫。
 
  使用 Eval 方法
  Eval 方法可計算數據綁定控件(如GridView、DetailsView 和FormView 控件)的模板中的後期綁定數據表達式。在運行時,Eval 方法調用DataBinder 對象的Eval 方法,同時引用命名容器的當前數據項。命名容器通常是包含完整記錄的數據綁定控件的最小組成部分,如GridView 控件中的一行。因此,只能對數據綁定控件的模板內的綁定使用Eval 方法。
 
  Eval 方法以數據字段的名稱作為參數,從數據源的當前記錄返回一個包含該字段值的字符串。可以提供第二個參數來指定返回字符串的格式,該參數為可選參數。字符串格式參數使用為String 類的Format 方法定義的語法。
 
  使用 Bind 方法
  Bind 方法與Eval 方法有一些相似之處,但也存在很大的差異。雖然可以像使用Eval 方法一樣使用Bind 方法來檢索數據綁定字段的值,但當數據可以被修改時,還是要使用Bind 方法。
 
  在ASP.NET 中,數據綁定控件(如GridView、DetailsView 和FormView 控件)可自動使用數據源控件的更新、刪除和插入操作。例如,如果已為數據源控件定義了SQL Select、Insert、Delete 和Update 語句,則通過使用GridView、DetailsView 或FormView 控件模板中的Bind 方法,就可以使控件從模板中的子控件中提取值,並將這些值傳遞給數據源控件。然後數據源控件將執行適當的數據庫命令。出於這個原因,在數據綁定控件的EditItemTemplate 或InsertItemTemplate 中要使用Bind 函數。
 
  Bind 方法通常與輸入控件一起使用,例如由編輯模式中的GridView 行所呈現的TextBox 控件。當數據綁定控件將這些輸入控件作為自身呈現的一部分創建時,該方法便可提取輸入值。

ASP.NET跨頁面傳值方法

1. 使用QueryString變量

QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。但是對於傳遞數組或對象的話,就不能用這個方法了。下面是一個例子:

a.aspx的C#代碼

private void Button1_Click(object sender, System.EventArgs e)
{
string s_url;
s_url = "b.aspx?name=" + Label1.Text;
Response.Redirect(s_url);
}

b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString["name"];
}

2. 使用Application 對象變量

Application對象的作用範圍是整個全局,也就是說對所有用戶都有效。其常用的方法用Lock和UnLock。

a.aspx的C#代碼

private void Button1_Click(object sender, System.EventArgs e)
{
Application["name"] = Label1.Text;
Server.Transfer("b.aspx");
}

b.aspx中C#代碼

private void Page_Load(object sender, EventArgs e)
{
string name;
Application.Lock();
name = Application["name"].ToString();
Application.UnLock();
}

3. 使用Session變量

想必這個肯定是大家使用中最常見的用法了,其操作與Application類似,作用於用戶個人,所以,過量的存儲會導致服務器內存資源的耗盡。

a.aspx的C#代碼

private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = Label.Text;
}

b.aspx中C#代碼

private void Page_Load(object sender, EventArgs e)
{
string name;
name = Session["name"].ToString();
}

4. 使用Cookie對象變量

這個也是大家常使用的方法,與Session一樣,其是什對每一個用戶而言的,但是有個本質的區別,即Cookie是存放在客戶端的,而session是存放在服務器端的。而且Cookie的使用要配合ASP.NET內置對象Request來使用。

a.aspx的C#代碼

private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}

b.aspx中C#代碼

private void Page_Load(object sender, EventArgs e)
{
string name;
name = Request.Cookie["name"].Value.ToString();
}

5. 使用Server.Transfer方法

這個才可以說是面象對象開發所使用的方法,其使用Server.Transfer方法把流程從當前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,所以這個方法是完全面象對象的,簡潔有效。

a.aspx的C#代碼

public string Name
{
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("b.aspx");
}

b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
a newWeb; //實例a窗體
newWeb = (source)Context.Handler;
string name;
name = newWeb.Name;
}

asp.net FileUpload 上傳檔案大小超過預設

當上傳檔案後,出現「Maximum Request Length Exceeded」
是因為上傳的檔案超過預設大小
預設為4096>>4MB

異動如下:
 <system.web>
      <httpRuntime maxRequestLength="10240"  />

    </system.web>

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)

  });

}

Close 畫面 並將父畫面Reload

Close 畫面 並將父畫面Reload

Script:
window.opener.location.reload();
window.close();

C# 編寫JavaScript 語法
//直接關閉視窗
        public void Close()
        {
            Page p = (Page)System.Web.HttpContext.Current.Handler;
            ClientScriptManager CSM = p.ClientScript;
            String ScriptName = "close";
            String ScriptMsg = "window.opener.location.reload();window.close();";
            Type CsType = p.GetType();
            if (!CSM.IsStartupScriptRegistered(CsType, ScriptName))
            {
                CSM.RegisterStartupScript(CsType, ScriptName, ScriptMsg, true);
            }
        }

子母視窗傳值 windowOpen()

參考引用來源:{JavaScript} 子母視窗傳值 windowOpen()
--
母視窗
window.open('TestReturnValue2.aspx?context=1');

TestReturnValue2子視窗
//當Label2為input 之html tag

window.opener.document.getElementById('Label2').value = 'abc';
//當Label1為asp.net之tag
window.opener.document.getElementById('Label1').innerHTML = 'abc';

-------------------------------------------------------------------------------------
使用user control傳值
母視窗
abc.ascx 上的control觸發:
window.open('TestReturnValue2.aspx?context=1');
abc.ascx上保留id 為return的control接回傳值
子視窗
cde.ascx 上的control觸發:

var returnValue = $('#<%=DataSource.ClientID %>').val();
            window.opener.document.getElementById('abc_return').value = returnValue;


結論:用底線隔開取得母視窗中user control上的control

ASP.NET 子視窗日曆傳值回母視窗控制項上

說明:點選母視窗上的TextBox後,彈出一日曆子視窗,點選日期後回傳至母視窗TextBox上。
--

Parent.aspx
<head runat="server">
    <title></title>
<script language="javascript" type="text/javascript">
function SetDate(ClientID)
{
    var Url = '../modaldialog/SetDate.aspx?DialogClientID=' + ClientID;
    window.open(Url, 'Calendar', 'width=335, height=170');
}
</script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="txtDate" runat="server" onclick="SetDate(this.id)"></asp:TextBox>
    </form>
</body>

Son.aspx
protected void Calendar1_SelectionChanged(object sender, System.EventArgs e)
    {
        if (Request.QueryString["DialogClientID"] != null)
        {
            string strClientID = Request["DialogClientID"].ToString().Trim();
            StringBuilder sbJScript = new StringBuilder();
            sbJScript.Append("window.opener.document.getElementById('" + strClientID + "').value = '" + this.Calendar1.SelectedDate.ToString("yyyy/MM/dd") + "';");
            sbJScript.Append("window.close();");
            ClientScript.RegisterStartupScript(this.GetType(), "ReturnValue", sbJScript.ToString(), true);
        }
    }

GridView展現Master-Detail的幾種方式(包含動態錄影教學)

請參考來源:GridView展現Master-Detail的幾種方式(包含動態錄影教學)
--
這個M+D 包在GridView 很不錯!!

Import (Upload) CSV file data to SQL Server database in ASP.Net using C# and VB.Net

請參考來源:Import (Upload) CSV file data to SQL Server database in ASP.Net using C# and VB.Net
--
Uploading and Importing CSV file to SQL Server in ASP.NET WebForms
--

2015年6月14日 星期日

asp.net dropdownlist selectedindexchanged

真是奇妙的運用 , 好不習慣!! 習慣了 windows app 開發 , web 有點...
參考引用來源:DropDownList的SelectedIndexChanged事件
底下code :
---

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SqlConnection conn = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DBconnStr"].ToString());
            SqlDataAdapter sqlda = new SqlDataAdapter();
            sqlda.SelectCommand = new SqlCommand("select id,name from demouser", conn);
            DataTable dt = new DataTable();
            sqlda.Fill(dt);
            this.DropDownList1.DataSource = dt;
            this.DropDownList1.DataTextField = "name";
            this.DropDownList1.DataValueField = "id";
            this.DropDownList1.DataBind();        
        }

    }
  
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        this.TextBox2.Text = this.DropDownList1.SelectedItem.Value;
    }
 <form id="form1" runat="server">
        <br />
        <br />
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
        </asp:DropDownList> 
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    </form>

MSSQL 依日期自動產流水序號

DECLARE @dt CHAR(6)

set @dt=CONVERT(CHAR(6),GETDATE(),12)

SELECT @dt+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6)

FROM tb WITH(XLOCK,PAGLOCK)

2015年6月13日 星期六

自行車出租系統-門市版 (自動更新機制)

自行車出租系統-門市版 
---
針對大型多門市系統,埋設自動更新系統的機制



查詢處理器已用完內部資源而無法產生查詢計畫

mssql 2008 r2 查詢處理器已用完內部資源而無法產生查詢計畫
--
真慘!! 跑不了
較複雜的mssql 統計分析,卻出現這樣;傷腦筋

2015年6月10日 星期三

ASP.NET GridView匯出Excel並解決亂碼問題

ASP.NET 將GridView內的資料匯出成Excel檔
---
看了上面這篇後,總算解決了問題點
如code:重點在這一行了!!
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
 
public partial class _Default : System.Web.UI.Page  
{ 
    protected void Button2_Click(object sender, EventArgs e) 
    { 
        Response.ClearContent(); 
        Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>"); 
        string excelFileName = "測試Excel檔案.xls"; 
        Response.AddHeader("content-disposition", "attachment;filename=" + Server.UrlEncode(excelFileName)); 
        Response.ContentType = "application/excel"; 
        System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
        GridView1.RenderControl(htmlWrite); 
        Response.Write(stringWrite.ToString()); 
        Response.End(); 
    } 
 
    public override void VerifyRenderingInServerForm(Control control)    
    { 
        // '處理'GridView' 的控制項 'GridView' 必須置於有 runat=server 的表單標記之中   
    }    
}

asp.net gridview to datatable

參考引用來源:如何將GridView或SqlDataSource轉成DataTable
--
Dim DT As New DataTable
DT.Columns.Add("欄位一")
DT.Columns.Add("欄位二")
DT.Columns.Add("欄位三")
..........
Dim ROW As DataRow
For I As Integer = 0 To Me.GridView1.Rows.Count - 1
ROW = DT.NewRow
ROW(0) = Me.GridView1.Rows(I).Cells(0).Text
ROW(1) = Me.GridView1.Rows(I).Cells(1).Text
ROW(2) = Me.GridView1.Rows(I).Cells(2).Text
..........
DT.Rows.Add(ROW)
Next
--
找一堆方法,要處理 GridView 內的CheckBox , 就只能先轉到 datatable 再來處理值後;再綁定回去!
--
一堆人的寫法都是把 CheckBox 綁在 GridView 內 ...= . ='' 這單行的不是我要的! 只能自理了!


html.asp.net語言轉換貼Blogger格式

FORMAT MY SOURCE CODE FOR BLOGGING
---
將ASP.NET ...等等html 等語法轉 Blogger 能貼文的格式

2015年6月9日 星期二

how to edit,update row in gridview

請參考來源:how to edit,update row in gridview
---

<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="GridViewComplete.aspx.cs"
   Inherits="GridViewComplete" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
   <title>Grid View Add Update Delete</title>
</head>
<body>
   <form id="form1" runat="server">
       <div>
           <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id"
              ShowFooter="true" AllowPaging="true"  PageSize="4"
              AllowSorting="True"
              OnRowCommand="GridView1_RowCommand"
              OnPageIndexChanging="GridView1_PageIndexChanging"
              OnRowDeleting="GridView1_RowDeleting"
              OnRowEditing="GridView1_RowEditing"
              OnRowUpdating="GridView1_RowUpdating"
              OnSorting="GridView1_Sorting"
              OnRowCancelingEdit="GridView1_RowCancelingEdit">
               <Columns>
                 <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                  <asp:TemplateField HeaderText="Id" InsertVisible="False" SortExpression="Id">
                      <EditItemTemplate>
                          <asp:Label ID="Label1" runat="server"
Text='<%# Eval("Id") %>'></asp:Label>
                      </EditItemTemplate>
                      <ItemTemplate>
                          <asp:Label ID="Label1" runat="server"
Text='<%# Bind("Id") %>'></asp:Label>
                      </ItemTemplate>
                  </asp:TemplateField>
                   <asp:BoundField DataField="Id"  ShowHeader="True"/>
                  <asp:TemplateField HeaderText="Name" SortExpression="Name">
                      <EditItemTemplate>
                          <asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("Name") %>'></asp:TextBox>
                      </EditItemTemplate>
                      <ItemTemplate>
                          <asp:Label ID="Label2" runat="server"
 Text='<%# Bind("Name") %>'></asp:Label>
                      </ItemTemplate>
                      <FooterTemplate>
                          <asp:TextBox ID="QuantityTextBox" runat="server"></asp:TextBox>
                      </FooterTemplate>
                  </asp:TemplateField>
                  <asp:TemplateField HeaderText="Description" SortExpression="Description">
                      <EditItemTemplate>
                          <asp:TextBox ID="TextBox2" runat="server"
Text='<%# Bind("Description") %>'></asp:TextBox>
                      </EditItemTemplate>
                      <ItemTemplate>
                          <asp:Label ID="Label3" runat="server"
Text='<%# Bind("Description") %>'></asp:Label>
                      </ItemTemplate>
                      <FooterTemplate>
                          <asp:TextBox ID="DescriptionTextBox" runat="server"></asp:TextBox>
                      </FooterTemplate>
                  </asp:TemplateField>
                  <asp:TemplateField>
                     <FooterTemplate>
                          <asp:LinkButton ID="btnNew" runat="server"
CommandName="New" Text="New" />
                      </FooterTemplate>
                  </asp:TemplateField>
              </Columns>
          </asp:GridView>
       </div>
       <div style="color:Red">
       <asp:Label ID="lblMsg" runat="server"></asp:Label>
       </div>
   </form>
</body>
</html>
程式區:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


public partial class GridViewComplete : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
        if (!IsPostBack)
        {
            BindGrid();
          
        }
    }
    public void BindGrid()
    {


        if (Session["dt"] == null)
        {
            GridView1.DataSource = CreateDGDataSource();
            GridView1.DataBind();
        }
        else
        {

            GridView1.DataSource = Session["dt"] as DataTable;
            GridView1.DataBind();

        }



    }
    public DataTable CreateDGDataSource()
    {
        // Create sample data for the DataList control.
        DataTable dt = new DataTable();
        DataRow dr;
        int i;
        int y;
        // Define the columns of the table.
        dt.Columns.Add(new DataColumn("ID", typeof(int)));
        dt.Columns.Add(new DataColumn("Name", typeof(string)));
        dt.Columns.Add(new DataColumn("Description", typeof(string)));
        //Make some rows and put some sample data in
        for (i = 1; i <= 5; i++)
        {
            dr = dt.NewRow();
            dr[0] = i;
            dr[1] = "Name" + "-" + i;
            dr[2] = "Item " + "_" + i;
            //add the row to the datatable
            dt.Rows.Add(dr);
        }

        Session["y"] = i;
        Session["dt"] = dt;

        return dt;
    }

    public ICollection CreateDGDataSource(int CategoryID)
    {
        DataView dv = new DataView(CreateDGDataSource(), "ID=" + CategoryID, null,
            DataViewRowState.CurrentRows);
        return dv;

    }
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        try
        {
            if (e.CommandName.Equals("New"))
            {
                LinkButton btnNew = e.CommandSource as LinkButton;
                GridViewRow row = btnNew.NamingContainer as GridViewRow;
                if (row == null)
                {
                    return;
                }
                TextBox txtCatName = row.FindControl("QuantityTextBox") as TextBox;
                TextBox txtDescription = row.FindControl("DescriptionTextBox") as TextBox;
                DataTable dt = Session["dt"] as DataTable;
                DataRow dr;
                int intId = (int)Session["y"];
                dr = dt.NewRow();
                dr["Id"] = intId++;
                Session["y"] = intId;
                dr["Name"] = txtCatName.Text;
                dr["Description"] = txtDescription.Text;
                dt.Rows.Add(dr);
                dt.AcceptChanges();
                Session["dt"] = dt;

                GridView1.DataSource = Session["dt"] as DataTable;
                GridView1.DataBind();

            }

        }
        catch (Exception ex)
        {

        }


    }
   
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        BindGrid();
    }
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataTable dataTable = Session["dt"] as DataTable;
        if (dataTable != null)
        {
            DataView dataView = new DataView(dataTable);
            dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
            GridView1.DataSource = dataView;
            GridView1.DataBind();
        }
    }
    private string ConvertSortDirectionToSql(SortDirection sortDireciton)
    {
        string newSortDirection = String.Empty;
        switch (sortDireciton)
        {
            case SortDirection.Ascending:
                newSortDirection = "ASC";
                break;
            case SortDirection.Descending:
                newSortDirection = "DESC";
                break;
        }
        return newSortDirection;
    }
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int ID = (int)GridView1.DataKeys[e.RowIndex].Value;
        // Query the database and get the values based on the ID and delete it.
        lblMsg.Text = "Deleted Record Id" +ID.ToString();
      
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        BindGrid();
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
       
        // Retrieve the row being edited.
        int index = GridView1.EditIndex;
        GridViewRow row = GridView1.Rows[index];
        TextBox t1 = row.FindControl("TextBox1") as TextBox;
        TextBox t2 = row.FindControl("TextBox2") as TextBox;
        string t3 = GridView1.DataKeys[e.RowIndex].Value.ToString();

        lblMsg.Text = "Updated record " + t1.Text + "," + t2.Text + "Value From Bound Field" + t3;
    }
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        BindGrid();
    }
}

ASP.NET GridView轉成CVS檔案 (解決中文字亂碼問題)

參考引用來源:[ASP.NET]GridView轉成CVS檔案 (解決中文字亂碼問題)
--
private void ExportCVS()
    {
        Response.Clear();
        Response.Buffer = true;
        string filename = DateTime.Now.ToString("yyyyMMdd") + "test.csv";
        Response.AddHeader("content-disposition", "attachment;filename=" + filename);

        Response.Charset = "BIG5";
        Response.ContentType = "application/text";
        Response.ContentEncoding = Encoding.GetEncoding(950);//950就是所謂的BIG5
        gvList.AllowPaging = false;
        //gvList.DataBind();
        QueryData();


        StringBuilder sb = new StringBuilder();
        for (int k = 0; k < gvList.Columns.Count; k++)
        {

            //add separator

            sb.Append(gvList.Columns[k].HeaderText + ',');

        }

        //append new line

        sb.Append("\r\n");

        for (int i = 0; i < gvList.Rows.Count; i++)
        {

            for (int k = 0; k < gvList.Columns.Count; k++)
            {

                //add separator
                sb.Append(gvList.Rows[i].Cells[k].Text + ',');

            }

            //append new line

            sb.Append("\r\n");

        }

        Response.Output.Write(sb.ToString());
        Response.Flush();
        Response.End();
        gvList.AllowPaging = true ;
        QueryData();
    }

Export DataSet or DataTable to Word Excel PDF and CSV Formats

請參考來源:Export DataSet or DataTable to Word Excel PDF and CSV Formats
---
另外:Office 2007 File Format MIME Types for HTTP Content Streaming 格式宣告
參考引用來源:Office 2007 File Format MIME Types for HTTP Content Streaming
---

.doc application/msword
.dot application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template
.docm application/vnd.ms-word.document.macroEnabled.12
.dotm application/vnd.ms-word.template.macroEnabled.12
.xls application/vnd.ms-excel
.xlt application/vnd.ms-excel
.xla application/vnd.ms-excel
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template
.xlsm application/vnd.ms-excel.sheet.macroEnabled.12
.xltm application/vnd.ms-excel.template.macroEnabled.12
.xlam application/vnd.ms-excel.addin.macroEnabled.12
.xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12
.ppt application/vnd.ms-powerpoint
.pot application/vnd.ms-powerpoint
.pps application/vnd.ms-powerpoint
.ppa application/vnd.ms-powerpoint
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.potx application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow
.ppam application/vnd.ms-powerpoint.addin.macroEnabled.12
.pptm application/vnd.ms-powerpoint.presentation.macroEnabled.12
.potm application/vnd.ms-powerpoint.presentation.macroEnabled.12
.ppsm application/vnd.ms-powerpoint.slideshow.macroEnabled.12

DIVCSS5 - DIV+CSS布局教程学习与CSS资源分享平台

DIVCSS5 - DIV+CSS布局教程学习与CSS资源分享平台
---
請參考原站

2015年6月8日 星期一

2015年6月7日 星期日

讓 ASP.NET 也可以使用 MsgBox 方法

 請參考引用來源:讓 ASP.NET 也可以使用 MsgBox 方法
--
''' 
''' 彈出提示訊息。
''' 
''' 訊息文字。
Public Sub MsgBox(ByVal Message As String)
    Dim sScript As String
    Dim sMessage As String

    sMessage = Strings.Replace(Message, "'", "\'") '處理單引號
    sMessage = Strings.Replace(sMessage, vbNewLine, "\n") '處理換行
    sScript = String.Format("alert('{0}');", sMessage)
    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "alert", sScript, True)
End Sub

asp.net color hex 對照表





逐一查看控制項集合以尋找頁面上的 Web Form 控制項

參考引用來源MSDN:HOW TO:逐一查看控制項集合以尋找頁面上的 Web Form 控制項
--
Private Sub Button1_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles Button1.Click
    Dim allTextBoxValues As String = ""
    Dim c As Control
    Dim childc As Control
    For Each c In Page.Controls
        For Each childc In c.Controls
            If TypeOf childc Is TextBox Then
                allTextBoxValues &= CType(childc, TextBox).Text & ","
            End If
        Next
    Next
    If allTextBoxValues <> "" Then
        Label1.Text = allTextBoxValues
    End If
End Sub

解決 DropDownList 永遠取得第一項的值

問題描述:如果 DropDownList 的項目是以動態方式產生的,又在產生的程式碼放置在 Page_Load() 中,將會發生取回的值永遠等於第一項的問題

發生原因:因為在 DropDownList 動態產生的過程中,項目會被重綁定一次,且會把SelectedIndex的值設為預設值0,自然取回的值就永遠等於第一項

解決辦法:DropDownList 動態產生程式碼放置在 !isPostBack 中

EX:

protected void Page_Load(object sender, EventArgs e)

{

if( !isPostBack ) loadDropDownList();

}

Add Row Click event to GridView Rows in ASP.Net

請參考來源
--
good code

Page EnableEventValidation="true" 無效的回傳或回呼引數

無效的回傳或回呼引數。已在組態中使用  
或在網頁中使用 <%@ Page EnableEventValidation="true" %> 啟用事件驗證。
基於安全性理由,這項功能驗證回傳或回呼引數是來自原本呈現它們的伺服器控制項。
如果資料為有效並且是必需的,請使用 ClientScriptManager.RegisterForEventValidation 方法註冊回傳
或回呼資料,以進行驗證。
---
參考1
參考2
---
1. 直接在 <%@ Page % 中使用 EnableEventValidation="false" 即可。
2. 若需要在全站中使用這個設定,則要在 Web.config 中設:

<configuration
    <system.web
        <page enableEventValidation="false" />
    </system.web
</configuration


   
       
   

2015年6月6日 星期六

asp.net target

請參考來源:HyperLink.Target 屬性
---
_blank 在無框架的新視窗中呈現內容。
_parent 在即時父代框架組中呈現內容。
_search 在搜尋窗格中呈現內容。
_self 在擁有焦點 (Focus) 的框架中呈現內容。
_top 在無框架的完整視窗中呈現內容。

dropdownlist 使用方法

參考引用來源:How can i set value and text dynamically to a dropdown list
--
If your datatable name is DtRecords then use following in Page Load to bind:

DropDownList1.DataSource = dtRecords;

DropDownList1.DataTextField = "cname";

DropDownList1.DataValueField = "cid";

DropDownList1.DataBind();

To get data on Button click;

string strCName = DropDownList.SelectedItem.Text; //Gets CName

string strCId = DropDownList.SelectedValue; //Gets CId

自動轉址與延遲轉址

.Net提供轉址功能
#Page.Response.Redirect("目標網址")
使用以下也可以
#Page.Response.Write("<script> location.href= ('目標網址'); </script> ")
以上兩句的不同址是在差在PostBack
但有時我們要讓Client看到一些訊息後...再轉址,就會有延遲轉址的問題...
時間單位為千分之一,所以需要三秒後轉跳即是在時間欄位輸入 3000
#Page.Response.Write(" <script> setTimeout('location.href=""目標網址""',時間); </script> ")

WebClient 抓取網頁內容

WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
txtRealPathData.Text = client.DownloadString(new Uri(“http://xxxx”));

ASP.NET Cookies 運用

請參考來源:ASP.NET Cookies
---
查了一大堆用法,還是要查微軟的才是最好

Saving and Loading Images in MSSQL with C# ASP .NET

請參考來源:Saving and Loading Images in MSSQL with C# ASP .NET
---

2015年6月5日 星期五

asp.net 國外教學網 (good)

Programming Tutorials and Source Code Examples
---
java . c# . asp.net . Android . IOS ..等等!

Win 7 右下角音量控制圖示 不見了?

參考引用來源
---
Del+Ctrl+Alt打開【工作管理員】,
然後選擇【處理程序】找到「explorer.exe」,右鍵點擊「結束處理程序」。
然後再點擊【檔案】選擇「新工作」,然後輸入「explorer.exe」後點擊確定。
再次打開【通知區域圖示】恢復正常囉!

2015年6月4日 星期四

ASP.NET MVC 2 的學習記錄

我的Coding之路 - ASP.NET MVC學習筆記
--
MVC 2 的學習,1x篇!!

ASP.NET MVC 整理的相關文件連結

以下是部落格中有關ASP.NET MVC類別的文章整理,依據各文章內容分門別類做了整理,讓各位可以快速找到資料。

康廷數位 - Blog: ASP.NET MVC



---
好多唷!! 不用到處找!! 這兒的連結夠多了!!

Visual Studio 沒有權限可從系統登錄讀取範本資訊 ( for VS2012 update 4)


----
又來了!! 熊熊又卡在這一關卡!
翻了一下自己的文章,以前也發生過這種問題!
發生原因:vs2012 update 4 後,整個權限被異動過! 造成要新建專案,完全都權限不足!
只能新使用vs2010 或 vs 2008 先新建專案後! 權限才會轉移回到 VS 身上
再執行 vs 2012  新建專案,果然可以了!  
----
微軟在這一部分,還是沒有處理好...唉!
作業系統內若有併存2個版本(含以上) 就會有"Visual Studio 沒有權限可從系統登錄讀取範本資訊"當最高版有更新過後,就會再度發生這樣的情況!!
----
網路是查不到這解法的,自己留著備查!! (也供遇到的人,可採用我這個方法去解套)



設計ASP.NET MVC4應用程式

請參考:設計ASP.NET MVC4應用程式(1)
請參考:設計ASP.NET MVC4應用程式(2)
請參考:設計ASP.NET MVC4應用程式(3)
請參考:設計ASP.NET MVC4應用程式(4)
請參考:設計ASP.NET MVC4應用程式(5)-使用ADO.NET設計資料庫應用程式
--
真棒的教學!! 值得學習~~