2010-11-23 10 views
1

데이터 표시를 위해 DataGrid 컨트롤을 사용하여 웹 사이트 개발에 ASP.NET 1.1을 사용하고 있습니다.두 행 사이에 행 삽입

DataGrid 컨트롤에서 두 행 사이에 행을 삽입하는 방법을 제안 할 수 있습니까?

감사합니다,

-Narendra

+0

은 아마도 몇 가지 코드를 보여를 너는 어떻게 묶고 있니? –

답변

0

당신은 당신의 데이터 소스에서 해당 행을 삽입해야합니다 - 아마 DataTable을.

그런 다음 해야합니다 귀하의 요구 사항에 따라 격자 정렬됩니다. 특정 위치에 새 행을 넣으려는 경우 DataTable에 SortOrder 열을 구현하고 바인딩 전에 필요에 따라 새 행 아래의 모든 행을 행에 명시 적으로 업데이트하십시오.

+0

답장을 보내 주셔서 감사합니다. 나는 datatable에 행을 추가하고 최신 datatable과 DataGrid를 리바 인했지만 행운이 없습니다. 새로 추가 된 행은 마지막 행에 추가됩니다. –

+0

주문을 생성하는 SQL에서 정렬 기준 또는 정렬 기준을 리바 인딩하는 경우? – Matt

+0

안녕하세요, 켐프벨, 한 가지 예를 들려주세요. –

0

새 행을 데이터 소스 (예 : DataTable)에 삽입 할 수 있습니다. DataRowCollection에는 원하는 위치에 행을 삽입 할 수있는 InsertAt 함수가 있습니다. 나는 간단한 예제를 제공합니다

(A의 GridView와 VB.Net으로는, 데이터 그리드는 동일하게 작동) :

ASPX :

<asp:GridView ID="MyGrid" runat="server" AutoGenerateColumns="true"> 
     </asp:GridView> 
     <asp:Button ID="BtnInsert" runat="server" Text="insert Obama at Position" /><asp:TextBox ID="TxtPosition" Text="0" runat="server"></asp:TextBox> 

이 Codebehind가 :

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Not IsPostBack Then 
      BindData(getDataSource()) 
     End If 
    End Sub 

    Private Function getDataSource() As DataTable 
     Dim tbl As New DataTable 
     Dim col As New DataColumn("ID", GetType(Int32)) 
     tbl.Columns.Add(col) 
     col = New DataColumn("FirstName", GetType(String)) 
     tbl.Columns.Add(col) 
     col = New DataColumn("LastName", GetType(String)) 
     tbl.Columns.Add(col) 
     Dim row As DataRow = tbl.NewRow 
     row("ID") = 1 
     row("FirstName") = "Benjamin" 
     row("LastName") = "Franklin" 
     tbl.Rows.Add(row) 
     row = tbl.NewRow 
     row("ID") = 2 
     row("FirstName") = "Arnold" 
     row("LastName") = "Schwarzenegger" 
     tbl.Rows.Add(row) 
     row = tbl.NewRow 
     row("ID") = 3 
     row("FirstName") = "Albert" 
     row("LastName") = "Einstein" 
     tbl.Rows.Add(row) 
     row = tbl.NewRow 
     row("ID") = 4 
     row("FirstName") = "Bill" 
     row("LastName") = "Gates" 
     tbl.Rows.Add(row) 
     Return tbl 
    End Function 

    Private Sub BindData(ByVal source As DataTable) 
     Me.MyGrid.DataSource = source 
     Me.MyGrid.DataBind() 
    End Sub 

    Private Sub BtnInsert_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnInsert.Click 
     Dim pos As Int32 = 0 
     Int32.TryParse(TxtPosition.Text, pos) 
     Dim source As DataTable = Me.getDataSource() 
     If pos < 0 OrElse pos > source.Rows.Count Then pos = 0 
     Dim row As DataRow = source.NewRow 
     row("ID") = 5 
     row("FirstName") = "Barack" 
     row("LastName") = "Obama" 
     source.Rows.InsertAt(row, pos)'this is the only important' 
     BindData(source) 
    End Sub