Bom Dia Pessoal!
Olha sou novo em asp.net e estava precisando criar um método de poder atualizar o datagrid, ja consegui fazer o remover e o cancelar, mas não consigo criar o update, para transformar os campos em caixa de texto e permitir alterar do dados da linha selecionada sempre me da erro.
alguem tem algum código pronto para dar uma olhada ou pode me ajudar.
Obrigado!!
Juliano
Update No Datagrid
Started By JuBachesque, 16/11/2004, 07:30
3 replies to this topic
#1
Posted 16/11/2004, 07:30
#2
Posted 16/11/2004, 09:48
posta seu código...
abraços
t+
abraços
t+
#3
Posted 16/11/2004, 13:24
O Código da minha página em asp é o seguinte:
*************// PARTE VB // ***************************************
Public Class usuarioscadastrados
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
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
'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
If Not Page.IsPostBack Then
BindData()
End If
End Sub
Public Sub BindData()
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
'Apps_Kodak.SelecAll acessa o banco e retorna todos os usuarios
DataSetUsuario = Apps_Kodak.SelectAll()
DataGrid1.DataSource = DataSetUsuario.Tables(0).DefaultView
DataGrid1.DataBind()
End Sub
Public Sub Edit(ByVal source As Object, ByVal E As DataGridCommandEventArgs) Handles DataGrid1.EditCommand
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
DataGrid1.EditItemIndex = E.Item.ItemIndex
BindData()
End Sub
Public Sub DataGrid_Cancel(ByVal Source As Object, ByVal E As DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
DataGrid1.EditItemIndex = -1
BindData()
End Sub
Public Sub DataGrid_Atualiza(ByVal source As Object, ByVal e As DataGridCommandEventArgs)
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
'Na linha abaixo ele não aceita, exibe mensagem de erro
Dim qtyText As TextBox = e.Item.Cells(2).Controls(0)
Dim priceText As TextBox = e.Item.Cells(3).Controls(0)
'Dim txtNome As String = CType(e.Item.Cells(3).Controls(0), TextBox).Text
Dim txtNome As TextBox = e.Item.Cells(2).Controls(0)
'Dim txtLogin As String
'txtNome = CType(e.Item.Cells(3).Controls(0), TextBox).Text
'txtLogin = CType(e.Item.Cells(4).Controls(0), TextBox).Text
DataGrid1.EditItemIndex = -1
BindData()
End Sub
Public Sub delete(ByVal source As Object, ByVal E As DataGridCommandEventArgs)
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
'NÃO ESQUECER DE COLOCAR O ABAIXO COOKIE PARA SE TER CERTEZA DE QUE É O ADMINISTRADOR QUE ESTA REMOVENDO
Apps_Kodak.Deleta_Usuario(CInt(E.Item.Cells(2).Text), 99)
'NÃO ESQUECER DE COLOCAR ACIMA O COOKIE PARA SE TER CERTEZA DE QUE É O ADMINISTRADOR QUE ESTA REMOVENDO
BindData()
End Sub
End Class
*************************/// PARTE HTML // ***************************
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="usuarioscadastrados.aspx.vb" Inherits="tesdedatagrid.usuarioscadastrados" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>usuarioscadastrados</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.micro...tellisense/ie5" name="vs_targetSchema">
</HEAD>
<body bgColor="#ffcc33" MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:label id="Label1" style="Z-INDEX: 101; LEFT: 216px; POSITION: absolute; TOP: 24px" runat="server"
Width="304px" Height="32px" Font-Size="X-Large" Font-Bold="True" ForeColor="Red">Usuários Cadastrados
</asp:label>
<asp:datagrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP: 80px"
runat="server" Width="456px" Height="144px" BorderColor="Black" BackColor="Silver" BorderStyle="None"
ShowFooter="false"
HorizontalAlign="Center"
PageSize="5"
AutoGenerateColumns="False"
OnEditCommand="Edit"
OnCancelCommand="DataGrid_Cancel"
OnDeleteCommand = "delete"
OnUpdateCommand="DataGrid_Atualiza"
DataKeyField="id">
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="Yellow" VerticalAlign="Middle"
BackColor="#404040"></HeaderStyle>
<FooterStyle HorizontalAlign="Center" VerticalAlign="Middle"></FooterStyle>
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" CancelText="Cancelar" EditText="Editar" UpdateText="Atualizar" />
<asp:ButtonColumn Text="Remover" CommandName="Delete"></asp:ButtonColumn>
<asp:BoundColumn HeaderText="ID" SortExpression="ID" ReadOnly="True" DataField="ID"></asp:BoundColumn>
<asp:BoundColumn HeaderText="Nome" SortExpression="Nome" ReadOnly="True" DataField="Nome"></asp:BoundColumn>
<asp:BoundColumn HeaderText="Login" SortExpression="Login" ReadOnly="True" DataField="Login"></asp:BoundColumn>
<asp:BoundColumn HeaderText="Nivel Acesso" SortExpression="Nivel Acesso" ReadOnly="True" DataField="Nivel Acesso"></asp:BoundColumn>
</Columns>
</asp:datagrid></form>
</body>
</HTML>
Quando eu clico em Atualizar é exibida a seguinte mensagem:
Server Error in '/tesdedatagrid' Application.
--------------------------------------------------------------------------------
Specified argument was out of the range of valid values. Parameter name: index
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: index
Source Error:
Line 61: Dim DataSetUsuario As New DataSet
Line 62: 'Na linha abaixo ele não aceita, exibe mensagem de erro
Line 63: Dim qtyText As TextBox = e.Item.Cells(2).Controls(0)Line 64: Dim priceText As TextBox = e.Item.Cells(3).Controls(0)
Line 65: 'Dim txtNome As String = CType(e.Item.Cells(3).Controls(0), TextBox).Text
Source File: c:\inetpub\wwwroot\tesdedatagrid\usuarioscadastrados.aspx.vb Line: 63
*************// PARTE VB // ***************************************
Public Class usuarioscadastrados
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
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
'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
If Not Page.IsPostBack Then
BindData()
End If
End Sub
Public Sub BindData()
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
'Apps_Kodak.SelecAll acessa o banco e retorna todos os usuarios
DataSetUsuario = Apps_Kodak.SelectAll()
DataGrid1.DataSource = DataSetUsuario.Tables(0).DefaultView
DataGrid1.DataBind()
End Sub
Public Sub Edit(ByVal source As Object, ByVal E As DataGridCommandEventArgs) Handles DataGrid1.EditCommand
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
DataGrid1.EditItemIndex = E.Item.ItemIndex
BindData()
End Sub
Public Sub DataGrid_Cancel(ByVal Source As Object, ByVal E As DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
DataGrid1.EditItemIndex = -1
BindData()
End Sub
Public Sub DataGrid_Atualiza(ByVal source As Object, ByVal e As DataGridCommandEventArgs)
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
'Na linha abaixo ele não aceita, exibe mensagem de erro
Dim qtyText As TextBox = e.Item.Cells(2).Controls(0)
Dim priceText As TextBox = e.Item.Cells(3).Controls(0)
'Dim txtNome As String = CType(e.Item.Cells(3).Controls(0), TextBox).Text
Dim txtNome As TextBox = e.Item.Cells(2).Controls(0)
'Dim txtLogin As String
'txtNome = CType(e.Item.Cells(3).Controls(0), TextBox).Text
'txtLogin = CType(e.Item.Cells(4).Controls(0), TextBox).Text
DataGrid1.EditItemIndex = -1
BindData()
End Sub
Public Sub delete(ByVal source As Object, ByVal E As DataGridCommandEventArgs)
Dim Apps_Kodak As New white.Apps_Kodak
Dim DataSetUsuario As New DataSet
'NÃO ESQUECER DE COLOCAR O ABAIXO COOKIE PARA SE TER CERTEZA DE QUE É O ADMINISTRADOR QUE ESTA REMOVENDO
Apps_Kodak.Deleta_Usuario(CInt(E.Item.Cells(2).Text), 99)
'NÃO ESQUECER DE COLOCAR ACIMA O COOKIE PARA SE TER CERTEZA DE QUE É O ADMINISTRADOR QUE ESTA REMOVENDO
BindData()
End Sub
End Class
*************************/// PARTE HTML // ***************************
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="usuarioscadastrados.aspx.vb" Inherits="tesdedatagrid.usuarioscadastrados" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>usuarioscadastrados</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.micro...tellisense/ie5" name="vs_targetSchema">
</HEAD>
<body bgColor="#ffcc33" MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:label id="Label1" style="Z-INDEX: 101; LEFT: 216px; POSITION: absolute; TOP: 24px" runat="server"
Width="304px" Height="32px" Font-Size="X-Large" Font-Bold="True" ForeColor="Red">Usuários Cadastrados
</asp:label>
<asp:datagrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP: 80px"
runat="server" Width="456px" Height="144px" BorderColor="Black" BackColor="Silver" BorderStyle="None"
ShowFooter="false"
HorizontalAlign="Center"
PageSize="5"
AutoGenerateColumns="False"
OnEditCommand="Edit"
OnCancelCommand="DataGrid_Cancel"
OnDeleteCommand = "delete"
OnUpdateCommand="DataGrid_Atualiza"
DataKeyField="id">
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="Yellow" VerticalAlign="Middle"
BackColor="#404040"></HeaderStyle>
<FooterStyle HorizontalAlign="Center" VerticalAlign="Middle"></FooterStyle>
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" CancelText="Cancelar" EditText="Editar" UpdateText="Atualizar" />
<asp:ButtonColumn Text="Remover" CommandName="Delete"></asp:ButtonColumn>
<asp:BoundColumn HeaderText="ID" SortExpression="ID" ReadOnly="True" DataField="ID"></asp:BoundColumn>
<asp:BoundColumn HeaderText="Nome" SortExpression="Nome" ReadOnly="True" DataField="Nome"></asp:BoundColumn>
<asp:BoundColumn HeaderText="Login" SortExpression="Login" ReadOnly="True" DataField="Login"></asp:BoundColumn>
<asp:BoundColumn HeaderText="Nivel Acesso" SortExpression="Nivel Acesso" ReadOnly="True" DataField="Nivel Acesso"></asp:BoundColumn>
</Columns>
</asp:datagrid></form>
</body>
</HTML>
Quando eu clico em Atualizar é exibida a seguinte mensagem:
Server Error in '/tesdedatagrid' Application.
--------------------------------------------------------------------------------
Specified argument was out of the range of valid values. Parameter name: index
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: index
Source Error:
Line 61: Dim DataSetUsuario As New DataSet
Line 62: 'Na linha abaixo ele não aceita, exibe mensagem de erro
Line 63: Dim qtyText As TextBox = e.Item.Cells(2).Controls(0)Line 64: Dim priceText As TextBox = e.Item.Cells(3).Controls(0)
Line 65: 'Dim txtNome As String = CType(e.Item.Cells(3).Controls(0), TextBox).Text
Source File: c:\inetpub\wwwroot\tesdedatagrid\usuarioscadastrados.aspx.vb Line: 63
#4
Posted 17/11/2004, 06:53
Olá Pessoal!
Consegui resolver o meu problema.
Quando eu criava a coluna, estava usando a seguinte expressão:
<asp:BoundColumn HeaderText="Nivel Acesso" SortExpression="Nivel Acesso" ReadOnly="True" DataField="Nivel Acesso"></asp:BoundColumn>
quando tirei ReadOnly passou a funcionar como queria, sem ela célula da linha selecionada, passou a poder ser alterada.
Obrigado!!
Consegui resolver o meu problema.
Quando eu criava a coluna, estava usando a seguinte expressão:
<asp:BoundColumn HeaderText="Nivel Acesso" SortExpression="Nivel Acesso" ReadOnly="True" DataField="Nivel Acesso"></asp:BoundColumn>
quando tirei ReadOnly passou a funcionar como queria, sem ela célula da linha selecionada, passou a poder ser alterada.
Obrigado!!
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)