Jag skriver asp.net i VS (VB.Net) och använder en access db. Jag har suttit och mixtrat lite med användar samt anpassade kontroller. Mitt problem: Jag har skapat en sida med en datagrid som visar användar data från en db. Denna sida har även en tillhörande anpassad (.vb) kontroll som sköter kopplingen till DB:n samt innhåller en sub för editering av fälten i datagriden. Allt funkade, men när jag försökte flytta över detta till en .ascx fil med tillhörande .vb fil slutade editeringen att fungera. Datan visas dock, men klickar man på "ändra" i datagriden så kommer inga textboxar upp. Det står endast "!fel på sidan".Problem med datagrid vid .ascx inkludering
Kod:
webformulär.aspx (där jag ink ascx filen)
<%@ Register TagPrefix="ADMIN" TagName="Redigera" src="admin.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="webbapplikation.WebForm1"%>
html och bodyn..
<P><ADMIN:redigera runat="server" id="Redigera1"></ADMIN:redigera>
slut body och html...
admin.ascx (som datagriden finns i)
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="admin.ascx.vb" Inherits="webbapplikation.WebUserControl1" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<form runat="server">
<asp:datagrid id="DataGrid1" runat="server" Font-Size="XX-Small" Font-Names="Trebuchet MS" Font-Bold="True"
ForeColor="LightSlateGray" BorderColor="White" BorderStyle="Solid" Height="30px" BackColor="#7C2424"
AutoGenerateColumns="False" Width="889px" CellSpacing="0" CellPadding="4" OnEditCommand="Datagrid1_EditCommand">
<SelectedItemStyle BackColor="DarkGray"></SelectedItemStyle>
<EditItemStyle BackColor="DimGray"></EditItemStyle>
<AlternatingItemStyle BackColor="#999999"></AlternatingItemStyle>
<ItemStyle BackColor="#7C2424"></ItemStyle>
<HeaderStyle ForeColor="Black" BackColor="#660000"></HeaderStyle>
<FooterStyle BackColor="White"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="Förnamn" HeaderText="Förnamn"></asp:BoundColumn>
<asp:BoundColumn DataField="Efternamn" HeaderText="Efternamn"></asp:BoundColumn>
<asp:BoundColumn DataField="Adress" HeaderText="Adress"></asp:BoundColumn>
<asp:BoundColumn DataField="Postnummer" HeaderText="Postnummer"></asp:BoundColumn>
<asp:BoundColumn DataField="Ort" HeaderText="Ort"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Uppdatera" HeaderText="Redigera" CancelText="Avbryt"
EditText="Ändra"></asp:EditCommandColumn>
<asp:ButtonColumn Text="X" ButtonType="PushButton" HeaderText="Ta bort?" CommandName="Delete"></asp:ButtonColumn>
</Columns>
<PagerStyle BackColor="White"></PagerStyle>
</asp:datagrid>
</form>
admin.ascx.vb (subbarna med db koppling, editering av datagrid)
Imports System.Data
Imports System.Data.OleDb
Public Class WebUserControl1
Inherits System.Web.UI.UserControl
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
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
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Dim dbKoppling As New OleDbConnection("Provider=" & "Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\inetpub\wwwroot\test_dotnet\bank.mdb")
Dim dbAnslutning As New OleDbDataAdapter("Select * from Användare", dbKoppling)
Dim dbDataset As DataSet = New DataSet
dbAnslutning.Fill(dbDataset, "Användare")
DataGrid1.DataSource = dbDataset.Tables("Användare").DefaultView
DataBind()
End Sub
Public Sub DataGrid1_EditCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
DataGrid1.EditItemIndex = e.Item.ItemIndex
DataGrid1.DataBind()
End Sub
End Class
Hoppas ni förstår vad jag menar. MVH/Erik