Hallo,
ich habe mir ein flexibeles Datagrid zusammengebaut. Zuerst mal was
funktioniert:
- Edit, Cancel,Delete-Spalte
- Checkbox zum Selektieren und das Schreiben der selektierten Zeilen in eine
neue Tabelle
- Zugriff auf einen Button in der Fusszeile
- Hinzufuegen einer neuen Zeile im Datagrid

Was bis jetzt nicht funktioniert:
Ich moechte die spalten des Datagrids auch flexibel gestalten. Darum habe
ich eine Spalte wie z.B.

<asp:BoundColumn DataField="aaa" HeaderText="AAA-Column"></asp:BoundColumn>

ersetzt durch

<asp:TemplateColumn HeaderText="AAA-Column"> <ITEMTEMPLATE>     <%#
DataBinder.Eval(Container.DataItem, getaaa()) %></ITEMTEMPLATE></asp:TemplateColumn>

und im Code behinde:

Public Function getaaa() As String
Return "aaa"
End Function

Was jetzt nicht mehr funktioniert ist der Zugriff auf die Werte des
Datagrids z.B. mit

(CType(E.Item.Cells(2).Controls(0), TextBox)).Text

Hat jemad dazu eine Idee. Ich stecke hier midestens schon zwei Tage total
fest. Der komplette Code folgt :-)
Danke im Voraus!!!




***Kompletter Code***

webform3.aspx

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm3.aspx.vb"
Inherits="eprocurement.WebForm3"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
  <HEAD>
    <title></title>
    <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
    <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema
content="http://schemas.microsoft.com/intellisense/ie5";>
  </HEAD>
  <body >

    <form id="Form1" method="post" runat="server">
        <asp:button id="btnArticleSearch" runat="server" Text="Search Article "
Height="24px" Width="156px"></asp:button>
        <asp:textbox id="tbSearch" runat="server"></asp:textbox>
        <asp:label id="lblArticleSelect" runat="server" Height="19px"
Width="412px"></asp:label>
        <asp:datagrid id="dgArticleSelect" runat="server" Height="100px"
Width="177px" 
                                AutoGenerateColumns="False" 
                                DataKeyField="ID" 
                                OnDeleteCommand="ArticleDelete" 
                                OnUpdateCommand="ArticleUpdate" 
                                OnCancelCommand="ArticleCancel" 
                                OnItemCommand="Item"
                                OnEditCommand="ArticleEdit" 
                                ShowFooter="True">
                                        <Columns>
                                                <asp:TemplateColumn 
HeaderText="SELECT">
                                                        <ItemTemplate>
                                                                <asp:CheckBox 
id="cbSelectBox" runat="server" Checked="False"
AutoPostBack="False"></asp:CheckBox>
                                                        </ItemTemplate>
                                                        <FooterTemplate>
                                                                <asp:Button 
id="submitSelection" CommandName="Submit" Text="Submit
Selection" runat="server"></asp:Button> 
                                                                <asp:Button 
id="newArticle" CommandName="newArticle" Text="New
Article" runat="server"></asp:Button> 
                                                        </FooterTemplate>
                                                </asp:TemplateColumn>
                                                <asp:BoundColumn DataField="ID" 
ReadOnly="True"
HeaderText="ID"></asp:BoundColumn>
                                                <asp:TemplateColumn 
HeaderText="AAA-Column">
                                                <ITEMTEMPLATE>
                                                <%# 
DataBinder.Eval(Container.DataItem, getaaa()) %>
                                                </ITEMTEMPLATE>
                                                </asp:TemplateColumn>
                                                <asp:BoundColumn DataField="bbb"
HeaderText="BBB-Column"></asp:BoundColumn>
                                                <asp:BoundColumn DataField="ccc"
HeaderText="Column-CCC"></asp:BoundColumn>
                                                <asp:TemplateColumn HeaderText="EDIT">
                                                        <ItemTemplate>
                                                                <asp:Button 
id="btnArticleEdit" runat="server" Text="Edit"
CommandName="Edit"></asp:Button>
                                                        </ItemTemplate>
                                                        <EditItemTemplate>
                                                                <ASP:Button 
id="btnArticleUpdate" runat="server" Text="Write"
CommandName="Update"></ASP:Button>
                                                                <ASP:Button 
id="btnArticleDelete" runat="server" Text="Delete"
CommandName="Delete"></ASP:Button>
                                                                <ASP:Button 
id="btnArticleCancel" runat="server" Text="Cancel"
CommandName="Cancel"></ASP:Button>
                                                        </EditItemTemplate>
                                                </asp:TemplateColumn>
                                        </Columns>
                                </asp:datagrid>
                        
    </form>

  </body>
</HTML>




zugeh�rige webform3aspx.vb

Public Class WebForm3
    Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

    End Sub

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region


    Protected WithEvents btnArticleSearch As
System.Web.UI.WebControls.Button
    Protected WithEvents btnArticleNew As System.Web.UI.WebControls.Button
    Protected WithEvents btnArticleSubmitSelection As
System.Web.UI.WebControls.Button
    Protected WithEvents btnArticleNewRow As
System.Web.UI.WebControls.Button
    Protected WithEvents tbSearch As System.Web.UI.WebControls.TextBox
    Protected WithEvents lblArticleSelect As System.Web.UI.WebControls.Label
    Protected WithEvents dgArticleSelect As
System.Web.UI.WebControls.DataGrid
    Protected WithEvents btnArticleSubmitNew As
System.Web.UI.WebControls.Button
    Protected WithEvents lblArticleNewAaa As System.Web.UI.WebControls.Label
    Protected WithEvents tbArticleNewAaa As
System.Web.UI.WebControls.TextBox
    Protected WithEvents lblArticleNewBbb As System.Web.UI.WebControls.Label
    Protected WithEvents tbArticleNewBbb As
System.Web.UI.WebControls.TextBox
    Protected WithEvents lblArticleNewCcc As System.Web.UI.WebControls.Label
    Protected WithEvents tbArticleNewCcc As
System.Web.UI.WebControls.TextBox
    Protected WithEvents panArticleNew As System.Web.UI.WebControls.Panel
    Dim btnArticleNewRowClick As Boolean = False
    Dim sqlConn As New
SqlConnection(ConfigurationSettings.AppSettings("dbconn"))
    Dim dsArticleSelect As New DataSet()

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
        End If
    End Sub

    Sub dgArticleSelectDatabind()
        Dim strArticleSelect As String = "SELECT * FROM xxx where aaa LIKE
'%" & tbSearch.Text & "%'"
        Dim daArticleSelect As New SqlDataAdapter(strArticleSelect, sqlConn)
        daArticleSelect.SelectCommand.Parameters.Add(New
SqlParameter("@tbSearch", SqlDbType.NVarChar, 50))
        daArticleSelect.SelectCommand.Parameters("@tbSearch").Value =
tbSearch.Text
        daArticleSelect.Fill(dsArticleSelect, "xxx")
        dgArticleSelect.DataSource =
dsArticleSelect.Tables("xxx").DefaultView
        dgArticleSelect.DataBind()
    End Sub

    Public Function getaaa() As String
        Return "aaa"
    End Function

    Private Sub btnArticleSearch_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnArticleSearch.Click
        dgArticleSelectDatabind()
        dgArticleSelect.EditItemIndex = -1
    End Sub

    Sub ArticleEdit(ByVal Sender As Object, ByVal E As
DataGridCommandEventArgs)
        lblArticleSelect.Text = ""
        dgArticleSelect.EditItemIndex = CInt(E.Item.ItemIndex)
        dgArticleSelectDatabind()
    End Sub

    Sub ArticleCancel(ByVal Sender As Object, ByVal E As
DataGridCommandEventArgs)
        dgArticleSelect.EditItemIndex = -1
        dgArticleSelectDatabind()
    End Sub

    Sub ArticleDelete(ByVal Sender As Object, ByVal E As
DataGridCommandEventArgs)
        Dim cmd As New SqlCommand("deletexxx", sqlConn)

        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add(New SqlParameter("@txtID", SqlDbType.NVarChar,
50))
        cmd.Parameters("@txtId").Value =
dgArticleSelect.DataKeys(CInt(E.Item.ItemIndex))

        sqlConn.Open()
        cmd.ExecuteNonQuery()
        sqlConn.Close()

        dgArticleSelect.EditItemIndex = -1
        dgArticleSelectDatabind()
        lblArticleSelect.Text = "Article with ID = " & E.Item.Cells(1).Text
& " deleted!"
    End Sub

    Sub ArticleUpdate(ByVal Sender As Object, ByVal E As
DataGridCommandEventArgs)
        If (CInt(dgArticleSelect.EditItemIndex) = 0) Then
            Dim AddUserSqlCommand As New SqlCommand("insertxxx", sqlConn)
            Dim AddArticleDatareader As SqlDataReader
            Dim ArticleReturn As Integer

            AddUserSqlCommand.CommandType = CommandType.StoredProcedure
            AddUserSqlCommand.Parameters.Add(New SqlParameter("@txtaaa",
SqlDbType.NVarChar, 50, ParameterDirection.Input)).Value =
(CType(E.Item.Cells(2).Controls(0), TextBox)).Text
            AddUserSqlCommand.Parameters.Add(New SqlParameter("@txtbbb",
SqlDbType.NVarChar, 50, ParameterDirection.Input)).Value =
(CType(E.Item.Cells(3).Controls(0), TextBox)).Text
            AddUserSqlCommand.Parameters.Add(New SqlParameter("@txtccc",
SqlDbType.NVarChar, 50, ParameterDirection.Input)).Value =
(CType(E.Item.Cells(4).Controls(0), TextBox)).Text
            AddUserSqlCommand.Parameters.Add(New SqlParameter("@myreturn",
SqlDbType.Int, 4, ParameterDirection.ReturnValue)).Value = -1

            Try
                sqlConn.Open()
                AddArticleDatareader = AddUserSqlCommand.ExecuteReader()

                ArticleReturn =
AddUserSqlCommand.Parameters("@myreturn").Value
                If ArticleReturn = 0 Then
                    lblArticleSelect.Text = "Article  alredy exists. Please
choose an other user name. "
                Else
                    lblArticleSelect.Text = "New Article added. Number: " &
ArticleReturn
                End If
                AddArticleDatareader.Close()
            Catch objerror As Exception
                lblArticleSelect.Text = "A database error occured: " &
objerror.Message & objerror.Source
            End Try
        Else
            Dim txtaaa As TextBox = E.Item.Cells(2).Controls(0)
            Dim txtbbb As TextBox = E.Item.Cells(3).Controls(0)
            Dim txtccc As TextBox = E.Item.Cells(4).Controls(0)

            Dim cmd As New SqlCommand("updatexxx", sqlConn)

            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add(New SqlParameter("@txtID", SqlDbType.Int))
            cmd.Parameters.Add(New SqlParameter("@txtaaa",
SqlDbType.NVarChar, 50))
            cmd.Parameters.Add(New SqlParameter("@txtbbb",
SqlDbType.NVarChar, 50))
            cmd.Parameters.Add(New SqlParameter("@txtccc",
SqlDbType.NVarChar, 50))

            cmd.Parameters("@txtId").Value =
dgArticleSelect.DataKeys(CInt(E.Item.ItemIndex))
            cmd.Parameters("@txtaaa").Value = txtaaa.Text
            cmd.Parameters("@txtbbb").Value = txtbbb.Text
            cmd.Parameters("@txtccc").Value = txtccc.Text

            sqlConn.Open()
            cmd.ExecuteNonQuery()
            lblArticleSelect.Text = "Article with ID = " &
dgArticleSelect.DataKeys(CInt(E.Item.ItemIndex)) & " updated!"
        End If
        sqlConn.Close()
        dgArticleSelect.EditItemIndex = -1
        dgArticleSelectDatabind()
    End Sub

    Sub Item(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
        If E.CommandName = "Submit" Then
            Dim i As Integer
            Dim cbSelection As CheckBox
            sqlConn.Open()

            For i = 0 To (dgArticleSelect.Items.Count - 1)
                cbSelection =
CType(dgArticleSelect.Items(i).Cells(0).Controls(1), CheckBox)
                If cbSelection.Checked = True Then
                    Dim cmd As New SqlCommand("insertxxx2yyy", sqlConn)

                    cmd.CommandType = CommandType.StoredProcedure
                    cmd.Parameters.Add(New SqlParameter("@txtID",
SqlDbType.NVarChar, 50))
                    cmd.Parameters.Add(New SqlParameter("@txtaaa",
SqlDbType.NVarChar, 50))
                    cmd.Parameters.Add(New SqlParameter("@txtbbb",
SqlDbType.NVarChar, 50))
                    cmd.Parameters.Add(New SqlParameter("@txtccc",
SqlDbType.NVarChar, 50))

                    cmd.Parameters("@txtId").Value =
dgArticleSelect.Items(i).Cells(1).Text()
                    cmd.Parameters("@txtaaa").Value =
dgArticleSelect.Items(i).Cells(2).Text()
                    cmd.Parameters("@txtbbb").Value =
dgArticleSelect.Items(i).Cells(3).Text()
                    cmd.Parameters("@txtccc").Value =
dgArticleSelect.Items(i).Cells(4).Text()

                    cmd.ExecuteNonQuery()
                    cmd.Dispose()
                End If
            Next
            sqlConn.Close()
            dgArticleSelect.EditItemIndex = -1
            dgArticleSelectDatabind()
        End If
        If E.CommandName = "newArticle" Then
            Dim strArticleSelect As String = "SELECT * FROM xxx where aaa
LIKE '%" & tbSearch.Text & "%'"
            Dim daArticleSelect As New SqlDataAdapter(strArticleSelect,
sqlConn)
            daArticleSelect.SelectCommand.Parameters.Add(New
SqlParameter("@tbSearch", SqlDbType.NVarChar, 50))
            daArticleSelect.SelectCommand.Parameters("@tbSearch").Value =
tbSearch.Text
            daArticleSelect.Fill(dsArticleSelect, "xxx")
            Dim BlankRow As DataRow = dsArticleSelect.Tables("xxx").NewRow()
            dsArticleSelect.Tables("xxx").Rows.InsertAt(BlankRow, 0)
            dgArticleSelect.DataSource =
dsArticleSelect.Tables("xxx").DefaultView
            dgArticleSelect.EditItemIndex = 0
            dgArticleSelect.DataBind()
        End If
    End Sub

End Class





-- 
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net


| [aspdedotnet] als [email protected] subscribed
| http://www.dotnetgerman.com/archiv/aspdedotnet/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.dotnetgerman.com/listen/aspDEdotnet.asp

Antwort per Email an