Im trying to make my first linq connection to a gridview, (im not using linqdatasource) and i get the records fine to my gridview.
But my AddNewTask, UpdateTask, And DeleteTask gives me and error about my Me.txtxxxx.text or Me.lblxxxx.text is not a part of my gridview.
But the labels and textboxs are a part of my gridview.
Can someone help/guide me, what to do, im new to this linq, but have read alot of tutorials, but cant find any fix for my problem.
Code_Behind
Imports System.Data.Linq
Partial Class gridview
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Call linqdb()
End If
End Sub
Protected Sub linqdb()
Using db As New ThedatabaseconnectionDataContext()
Dim tblTest As Table(Of testtable) = db.GetTable(Of testtable)()
Me.GridView1.DataSource = tblTest
Me.GridView1.DataBind()
End Using
End Sub
Protected Sub AddNewTask(ByVal sender As Object, ByVal e As EventArgs)
Using db As New ThedatabaseconnectionDataContext()
Try
Dim tbltest As Table(Of testtable) = db.GetTable(Of testtable)()
Dim rtest As testtable = New testtable With {.test_cat = Me.txttestcat.Text, .test_info = Me.txttestinfo.Text, .test_number = Me.txttestnumber.Text, .test_datetime = Me.txttestdate.Text}
tbltest.InsertOnSubmit(rtest)
db.SubmitChanges()
'Me.lblMsg.Text = "Added Successfully"
Catch ex As Exception
'Me.lblMsg.Text = ex.Message
End Try
End Using
End Sub
Protected Sub EditTask(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
GridView1.EditIndex = e.NewEditIndex
linqdb()
End Sub
Protected Sub CancelEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
GridView1.EditIndex = -1
linqdb()
End Sub
Protected Sub UpdateTask(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
Using db As New ThedatabaseconnectionDataContext()
Try
Dim tbltest As Table(Of testtable) = db.GetTable(Of testtable)()
Dim objtest As testtable = tbltest.SingleOrDefault(Function(p) p.test_id = Me.txttestid.Text)
If objtest IsNot Nothing Then
objtest.test_cat = Me.txttestcat.Text
objtest.test_info = Me.txttestinfo.Text
objtest.test_number = Me.txttestnumber.Text
objtest.test_datetime = Me.txttestdate.Text
db.SubmitChanges()
' Me.lblMsg.Text = "Updated Successfully"
Else
'Me.lblMsg.Text = "Employee not found"
End If
Catch ex As Exception
'Me.lblMsg.Text = ex.Message
End Try
End Using
End Sub
Protected Sub DeleteTask(ByVal sender As Object, ByVal e As EventArgs)
Using db As New ThedatabaseconnectionDataContext()
Try
Dim tbltest As Table(Of testtable) = db.GetTable(Of testtable)()
Dim objtest As testtable = tbltest.SingleOrDefault(Function(p) p.test_id = Me.lbltestid.text)
If objtest IsNot Nothing Then
tbltest.DeleteOnSubmit(objtest)
db.SubmitChanges()
'Me.lblMsg.Text = "Deleted Successfully"
Else
'Me.lblMsg.Text = "Employee not found"
End If
Catch ex As Exception
'Me.lblMsg.Text = ex.Message
End Try
End Using
End Sub
End Class
Main_Code
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="gridview.aspx.vb" Inherits="gridview" %>
<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px"
CellPadding="4" DataKeyNames="test_id" ForeColor="Black" GridLines="Horizontal" ShowFooter="true"
onrowediting="EditTask" onrowupdating="UpdateTask" onrowcancelingedit="CancelEdit">
<Columns>
<asp:TemplateField ItemStyle-Width="30px" HeaderText="test_id">
<ItemTemplate>
<asp:Label ID="lbltestid" runat="server" Text='<%# Eval("test_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="100px" HeaderText="test_cat">
<ItemTemplate>
<asp:Label ID="lbltestcat" runat="server" Text='<%# Eval("test_cat")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txttestcat" runat="server" Text='<%# Eval("test_cat")%>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txttestcat" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="150px" HeaderText="test_info">
<ItemTemplate>
<asp:Label ID="lbltestinfo" runat="server" Text='<%# Eval("test_info")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txttestinfo" runat="server" Text='<%# Eval("test_info")%>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txttestinfo" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="150px" HeaderText="test_number">
<ItemTemplate>
<asp:Label ID="lbltestnumber" runat="server" Text='<%# Eval("test_number")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txttestnumber" runat="server" Text='<%# Eval("test_number")%>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txttestnumber" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="150px" HeaderText="test_date">
<ItemTemplate>
<asp:Label ID="lbltestdate" runat="server" Text='<%# Eval("test_datetime")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txttestdate" runat="server" Text='<%# Eval("test_datetime")%>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txttestdate" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkRemove" runat="server" CommandArgument='<%# Eval("test_id")%>' OnClientClick="return confirm('Do you want to delete?')" Text="Delete" OnClick="DeleteTask"></asp:LinkButton>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="AddNewTask" />
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Columns>
<FooterStyle BackColor="#CCCC99" ForeColor="Black" />
<HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F7F7F7" />
<SortedAscendingHeaderStyle BackColor="#4B4B4B" />
<SortedDescendingCellStyle BackColor="#E5E5E5" />
<SortedDescendingHeaderStyle BackColor="#242121" />
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="GridView1" />
</Triggers>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
testtableRecords.vb
Imports Microsoft.VisualBasic
Imports System.Web
Imports System.Data.Linq.Mapping
<Table(Name:="testtablerecords")> _
Public Class testtableRecords
'DB Fieldname and type = new name _name..
Private _testId As Integer
<Column(IsPrimaryKey:=True)> _
Public Property test_id() As Integer
Get
Return _testId
End Get
Set(ByVal value As Integer)
_testId = value
End Set
End Property
'DB Fieldname and type = new name _name..
Private _testCat As String
<Column()> _
Public Property test_cat() As String
Get
Return _testCat
End Get
Set(ByVal value As String)
_testCat = value
End Set
End Property
'DB Fieldname and type = new name _name..
Private _testInfo As String
<Column()> _
Public Property test_info() As String
Get
Return _testInfo
End Get
Set(ByVal value As String)
_testInfo = value
End Set
End Property
'DB Fieldname and type = new name _name..
Private _testNumbers As Integer
<Column()> _
Public Property test_numbers() As Integer
Get
Return _testNumbers
End Get
Set(ByVal value As Integer)
_testNumbers = value
End Set
End Property
'DB Fieldname and type = new name _name..
Private _testDate As Date
<Column()> _
Public Property test_datetime() As Date
Get
Return _testDate
End Get
Set(ByVal value As Date)
_testDate = value
End Set
End Property
End Class
The problem is that
txttestcat,txttestinfoet al. are not properties of your classgridview. They are the IDs of objects deep in the object hierarchy of the page, specifically that ofGridView1.To access them, you need to use the
FindControlmethod of the GridViewRow. I’m working from memory, here, but if you replaceMe.txttestcat.Textwith… and convert the other lines similarly, you should be fine.