2012年4月17日 星期二

GridView 加入自動編號欄位

此範例是示範如何在 GridView 加入一個自動編號的欄位,以標示該資料列的編號。
首先在 GridView 第一欄加入一個 TemplateField,並在 TemplateField 的 ItemTemplate 加入一個 Label (ID=lblNo),asxp 對應程式碼如下。
01<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
02    DataKeyNames="Flag,ID" DataSourceID="SqlDataSource1" EmptyDataText="沒有資料錄可顯示。">
03    <Columns>
04        <asp:TemplateField HeaderText="序號">
05            <ItemTemplate>
06                <asp:Label ID="lblNo" runat="server" Text="Label"></asp:Label>
07            </ItemTemplate>
08            <ItemStyle Wrap="True" />
09            <HeaderStyle Wrap="False" />
10        </asp:TemplateField>
11 
12    </Columns>
13</asp:GridView>

然後在 GridView 的 RowDataBound 事件中,設定每一列的 lblNo 的 Text 屬性值為 RowIndex+1。
因為 RowIndex 起始編號為 0 ,故每列的自動編號為 RowIndex+1。
1Protected Sub GridView1_RowDataBound(ByVal sender As ObjectByVal As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
2    Dim oLabel As Label
3    If e.Row.RowType = DataControlRowType.DataRow Then
4        oLabel = CType(e.Row.Cells(0).FindControl("lblNo"), Label)
5        oLabel.Text = (e.Row.RowIndex + 1).ToString()
6    End If
7End Sub

以上的寫法遇到 GridView 分頁時,都是由 1 開始編號,若需分頁需要接續編號,可改用修改如下。
01Protected Sub GridView1_RowDataBound(ByVal sender As ObjectByVal As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
02    Dim oLabel As Label
03    Dim oGridView As GridView
04 
05    If e.Row.RowType = DataControlRowType.DataRow Then
06        oGridView = CType(sender, GridView)
07        oLabel = CType(e.Row.Cells(0).FindControl("lblNo"), Label)
08        oLabel.Text = (oGridView.PageIndex * oGridView.PageSize) + (e.Row.RowIndex + 1).ToString()
09    End If
10End Sub

ile Uploader 大檔案拖曳上傳控制項 想要在您的 Silverlight 和 ASP.NET 頁面上加入『大檔案拖曳上傳』的功能,並在上傳時顯示即時的上傳進度嗎? 在上個月的Visual Studio 2010上市發表會當中,我概略的展示了Silverlight 4的一些新功能,其中我個人最喜歡的範例就是大檔案的拖曳上傳(就是把file從檔案總管中拖曳到瀏覽器中並直接上傳,同時顯示該檔案的真實上傳進度)。 這個功能早在ASP.NET 2.0時代,我們就嘗試透過AJAX來開發過(當然當時只能做大檔案上傳,還沒有拖曳功能),在坊間許多文管系統當中(最典型的就是MOSS),這個功能也都是相當重要的需求之一。但礙於當時技術的限制,過去多半的解決方案都是在用戶端安裝特殊的ActiveX元件來處理。一來這衍生出安全性問題,二來也不是每一個用戶端都能夠順利或無條件的安裝ActiveX元件,再加上許多ASP.NET開發人員對於ActiveX元件的開發可能相當陌生,造成開發人員很大的困擾。 在Silverlight 4出現之後,我就一直很想把這個功能作一些整合,因此才有在VS2010上市發表會中的那個範例。但畢竟整個上傳動作涉及前後端的交互運作,前端是Silverlight 4,後端是ASP.NET應用程式,要開發人員從頭到尾重新建立這樣的功能實屬不易。 也因此,趁記憶猶新,我把拖曳大檔案上傳的功能整理成可在Silverlight 4或ASP.NET應用程式當中可重複使用的控制項,提供給需要的開發人員直接使用。 相關的套件FileUploader檔案(Binaries & Examples)下載位置可參考[這裡]。 (範例包含Silverlight與ASP.NET) 在ASP.NET 2.0~4.0應用程式中的直接使用方式之說明文件可參考[這裡]。 (是的,在ASP.NET當中也可以直接使用,開發人員不一定需要會Silverlight) 在Silvelright 4應用程式當中的使用方式之說明文件可參考[這裡]。 底下是簡單的測試畫面展示,希望對各位有幫助。

ile Uploader 大檔案拖曳上傳控制項
想要在您的 Silverlight 和 ASP.NET 頁面上加入『大檔案拖曳上傳』的功能,並在上傳時顯示即時的上傳進度嗎?

在上個月的Visual Studio 2010上市發表會當中,我概略的展示了Silverlight 4的一些新功能,其中我個人最喜歡的範例就是大檔案的拖曳上傳(就是把file從檔案總管中拖曳到瀏覽器中並直接上傳,同時顯示該檔案的真實上傳進度)。

這個功能早在ASP.NET 2.0時代,我們就嘗試透過AJAX來開發過(當然當時只能做大檔案上傳,還沒有拖曳功能),在坊間許多文管系統當中(最典型的就是MOSS),這個功能也都是相當重要的需求之一。但礙於當時技術的限制,過去多半的解決方案都是在用戶端安裝特殊的ActiveX元件來處理。一來這衍生出安全性問題,二來也不是每一個用戶端都能夠順利或無條件的安裝ActiveX元件,再加上許多ASP.NET開發人員對於ActiveX元件的開發可能相當陌生,造成開發人員很大的困擾。

在Silverlight 4出現之後,我就一直很想把這個功能作一些整合,因此才有在VS2010上市發表會中的那個範例。但畢竟整個上傳動作涉及前後端的交互運作,前端是Silverlight 4,後端是ASP.NET應用程式,要開發人員從頭到尾重新建立這樣的功能實屬不易。

也因此,趁記憶猶新,我把拖曳大檔案上傳的功能整理成可在Silverlight 4或ASP.NET應用程式當中可重複使用的控制項,提供給需要的開發人員直接使用。

相關的套件FileUploader檔案(Binaries & Examples)下載位置可參考[這裡]。 (範例包含Silverlight與ASP.NET)
在ASP.NET 2.0~4.0應用程式中的直接使用方式之說明文件可參考[這裡]。 (是的,在ASP.NET當中也可以直接使用,開發人員不一定需要會Silverlight)
在Silvelright 4應用程式當中的使用方式之說明文件可參考[這裡]。
底下是簡單的測試畫面展示,希望對各位有幫助。