如何将gridview值更新为文本框并将其绑定回gridview [英] how to update gridview value to textbox and bind it back to gridview

查看:73
本文介绍了如何将gridview值更新为文本框并将其绑定回gridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,







你可以帮我这个..我已经设法将文本框值插入gridview。但是当我想编辑gridview行的值(传回文本框)时它没有工作。总是得到0行索引。请帮助我..这是紧急的。我已经从昨天尝试但是失败。







我的代码落后:



hi all,



can u help me on this..i already manage to insert textbox values to gridview.but when i want to edit the value of gridview row (pass back to textbox) it didnt work.it always get the 0 row index.please help me..it is urgent.i already try from yesterday but failed.



my code behind:

Private Sub FirstGridViewRow()
        Dim dt As New DataTable()
        Dim dr As DataRow = Nothing
        dt.Columns.Add(New DataColumn("Bil", GetType(String)))
        dt.Columns.Add(New DataColumn("Wheel Record No", GetType(String)))
        dt.Columns.Add(New DataColumn("SMH", GetType(String)))
        dt.Columns.Add(New DataColumn("Tindakan", GetType(String)))
        dt.Columns.Add(New DataColumn("Jenis Tayar", GetType(String)))
        ''dt.Columns.Add(New DataColumn("Kuantiti", GetType(String)))

        dr = dt.NewRow()
        ''dr("RowNumber") = i + 1
        dr("Wheel Record No") = String.Empty
        dr("SMH") = String.Empty
        dr("Tindakan") = String.Empty
        dr("Jenis Tayar") = String.Empty
        ''dr("Kuantiti") = String.Empty

        dt.Rows.Add(dr)

        grvDO.DataSource = dt
        grvDO.DataBind()


    End Sub


    ''A method that Inserts the records to the database
    Private Sub InsertRecords(ByVal sc As StringCollection)
        Dim conn As New SqlConnection(connectionString)
        Dim sb As New StringBuilder(String.Empty)

        Dim splitItems As String() = Nothing
        For Each item As String In sc

            Const sqlStatement As String = "Insert into delivery_order (tarikh,contractno,tindakan,jenisroda,wheelno,smhref,dono,authorizedby,kuantiti,status) values "

            If item.Contains(",") Then
                splitItems = item.Split(",".ToCharArray())
                sb.AppendFormat("{0}(''{1}'',''{2}'',''{3}'',''{4}'',''{5}'',''{6}'',''{7}'',''{8}'',''{9}'',''{10}''); ", sqlStatement, splitItems(0), splitItems(1), splitItems(2), splitItems(3), splitItems(4), splitItems(5), splitItems(6), splitItems(7), splitItems(8), splitItems(9))

            End If
        Next

        Try
            conn.Open()
            Dim cmd As New SqlCommand(sb.ToString(), conn)

            cmd.CommandType = CommandType.Text

            cmd.ExecuteNonQuery()

            ''Display a popup which indicates that the record was successfully inserted

            Page.ClientScript.RegisterClientScriptBlock(GetType(Page), "Script", "alert(''Records Successfully Saved!'');", True)
        Catch ex As System.Data.SqlClient.SqlException
            Dim msg As String = "Insert Error:"
            msg += ex.Message

            Throw New Exception(msg)
        Finally
            conn.Close()
        End Try
    End Sub

   

    Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim rowIndex As Integer = 0
        Dim q As Integer = 0
        Dim sc As New StringCollection()
        If ViewState("CurrentTable") IsNot Nothing Then
            Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
            If dtCurrentTable.Rows.Count > 0 Then
                For i As Integer = 1 To dtCurrentTable.Rows.Count
                    ''extract the TextBox values
                    Dim wheelno As Label = DirectCast(grvDO.Rows(rowIndex).Cells(1).FindControl("wheel"), Label)
                    Dim smhref As Label = DirectCast(grvDO.Rows(rowIndex).Cells(2).FindControl("smh"), Label)
                    Dim ddl_tindakan As Label = DirectCast(grvDO.Rows(rowIndex).Cells(3).FindControl("tindakan"), Label)
                    Dim ddl_jenisroda As Label = DirectCast(grvDO.Rows(rowIndex).Cells(4).FindControl("axletype"), Label)
                    ''Dim kuantiti As Label = DirectCast(grvDO.Rows(rowIndex).Cells(5).FindControl("kuantiti"), Label)
                    authorizedby.Text = "SMH Rep."
                    status.Text = "Pending"
                    q = dtCurrentTable.Rows.Count
                    kuantiti.Text = q

                    ''get the values from the TextBoxes
                    ''then add it to the collections with a comma "," as the delimited values
                    sc.Add(tarikh.Text + "," + contractno.Text + "," + ddl_tindakan.Text + "," + ddl_jenisroda.Text +
                           "," + wheelno.Text + "," + smhref.Text + "," + dono.Text + "," + authorizedby.Text + "," + kuantiti.Text + "," + status.Text)
                    rowIndex += 1
                Next
                ''Call the method for executing inserts
                ''Insert()
                InsertRecords(sc)
                FirstGridViewRow()
                contractno.Text = String.Empty
                smhref.Text = String.Empty
                wheelno.Text = String.Empty
                ddl_jenisroda.ClearSelection()
                ddl_tindakan.ClearSelection()
            End If
        End If

       
    End Sub

    Protected Sub tambah_Click(ByVal sender As Object, ByVal e As EventArgs)
        If ViewState("CurrentTable") IsNot Nothing Then
            Dim dt As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
            Dim count As Integer = dt.Rows.Count
            BindGrid(count)
        Else
            BindGrid(1)
        End If
        btnSave.Visible = True
        smhref.Text = String.Empty
    End Sub

    Protected Sub BindGrid(ByVal rowcount As Integer)
        Dim i As Integer = 0
        Dim dt As New DataTable()
        Dim dr As DataRow
        dt.Columns.Add(New DataColumn("Bil", GetType(String)))
        dt.Columns.Add(New System.Data.DataColumn("Wheel Record No", GetType(String)))
        dt.Columns.Add(New System.Data.DataColumn("SMH", GetType(String)))
        dt.Columns.Add(New System.Data.DataColumn("Tindakan", GetType(String)))
        dt.Columns.Add(New System.Data.DataColumn("Jenis Tayar", GetType(String)))
        ''dt.Columns.Add(New System.Data.DataColumn("Kuantiti", GetType(String)))

        If ViewState("CurrentTable") IsNot Nothing Then
            For j As Integer = 0 To rowcount + 1
                dt = DirectCast(ViewState("CurrentTable"), DataTable)
                If dt.Rows.Count > 0 Then
                    dr = dt.NewRow()
                    dr(0) = dt.Rows(0)(0).ToString()

                End If
            Next
            dr = dt.NewRow()

            dr(0) = i + 1
            dr(1) = wheelno.Text
            dr(2) = smhref.Text
            If ddl_tindakan.SelectedValue = "Pilih" Then
                dr(3) = ""
            Else
                dr(3) = ddl_tindakan.SelectedValue
            End If



            If ddl_jenisroda.SelectedValue = "Pilih" Then

                dr(4) = ""
            Else
                dr(4) = ddl_jenisroda.SelectedValue
            End If
            ''dr(5) = kuantiti.Text



            dt.Rows.Add(dr)
        Else
            dr = dt.NewRow()
            dr(0) = i + 1
            dr(1) = wheelno.Text
            dr(2) = smhref.Text
            dr(3) = ddl_tindakan.SelectedValue
            dr(4) = ddl_jenisroda.SelectedValue
            ''dr(5) = kuantiti.Text
            dt.Rows.Add(dr)

        End If

        '' If ViewState has a data then use the value as the DataSource
        If ViewState("CurrentTable") IsNot Nothing Then
            grvDO.DataSource = DirectCast(ViewState("CurrentTable"), DataTable)
            grvDO.DataBind()
        Else
            '' Bind GridView with the initial data assocaited in the DataTable
            grvDO.DataSource = dt

            grvDO.DataBind()
        End If
        '' Store the DataTable in ViewState to retain the values
        ViewState("CurrentTable") = dt
        grvDO.Visible = True
    End Sub

    Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As EventArgs) ''edit
        Dim row As GridViewRow = CType(CType(sender, ImageButton).Parent.Parent, GridViewRow)
        Dim mySelectedRow As GridViewRow = row
        Label1.Text = row.Cells(0).Text
     

        Dim wheel As String = CType(mySelectedRow.FindControl("wheel"), Label).Text.ToString() ''DirectCast(grvDO.Rows(row).Cells(1).FindControl("wheel"), Label).Text.ToString() 
        wheelno.Text = wheel
        Dim smh As String = CType(mySelectedRow.FindControl("smh"), Label).Text.ToString()
        smhref.Text = smh

        Dim tindakan As String = CType(mySelectedRow.FindControl("tindakan"), Label).Text.ToString()
        ddl_tindakan.SelectedValue = tindakan
        Dim axletype As String = CType(mySelectedRow.FindControl("axletype"), Label).Text.ToString()
        ddl_jenisroda.SelectedValue = axletype
      
        Button1.Visible = True
        tambah.Visible = False


    End Sub

    Protected Sub grvDO_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
        ''Dim sn As Integer = Convert.ToInt16(DirectCast(grvDO.Rows(e.RowIndex).Cells(0).Controls(0), TextBox).Text)
        ''Label2.Text = sn
        Dim row As GridViewRow = grvDO.Rows(e.RowIndex)
        ''Find the row that was clicked for updating.
        grvDO.EditIndex = -1
        ''Change the edit index to -1 .
        If row IsNot Nothing Then
            Dim t As TextBox = DirectCast(row.Cells(1).Controls(0), TextBox)
            ''Find the Control in the grid.

            ''CurrentTable = DirectCast(Session("rows"), DataTable)
            Dim dt As DataTable = DirectCast(ViewState("CurrentData"), DataTable)
            ''Get the values of the datatable from the session variable
            ''Traverse through the Datatable till you hit the same row as the row needed to be updated. 

            For i As Integer = 0 To dt.Rows.Count - 1
                If e.RowIndex = i Then

                    dt.Rows(i)(0) = Convert.ToInt32(t.Text)
                    '' Change the row''s 0th column with the value entered in the textbox.
                    ViewState("CurrentData") = dt ''Session("rows") = dt
                    ''Update the session variable with the changes.
                    ''The same old stuff, set the Datasource and bind the Grid.! everyone is happy!
                    grvDO.DataSource = dt
                    grvDO.DataBind()
                End If
            Next
        End If

    End Sub


    Protected Sub UpdateRecord(ByVal sender As Object, ByVal e As EventArgs)

        Dim dr As GridViewRow = CType(CType(sender, Button).Parent.Parent, GridViewRow)
        Dim row As GridViewRow = dr
        Dim rowIndex As Integer = 0 ''Integer.Parse(Label1.Text)
        Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
        Dim columnIndex As Integer = 0
        Label2.Text = row.Cells(0).Text

        For i As Integer = 0 To dtCurrentTable.Rows.Count

            Dim wheel As Label = DirectCast(grvDO.Rows(rowIndex).Cells(1).FindControl("wheel"), Label)
            wheel.Text = wheelno.Text ''CType(row.FindControl("wheel"), Label)
            Dim smh As Label = DirectCast(grvDO.Rows(rowIndex).Cells(2).FindControl("smh"), Label)
            smh.Text = smhref.Text
            Dim tindakan As Label = DirectCast(grvDO.Rows(rowIndex).Cells(3).FindControl("tindakan"), Label)
            tindakan.Text = ddl_tindakan.SelectedValue ''CType(row.FindControl("tindakan"), Label)
            Dim axletype As Label = DirectCast(grvDO.Rows(rowIndex).Cells(4).FindControl("axletype"), Label)
            axletype.Text = ddl_jenisroda.SelectedValue

        Next


        


        Button1.Visible = False
        tambah.Visible = True
    End Sub

aspx code:

<blockquote class="FQ"><div class="FQA">Quote:</div><asp:Panel ID="Panel1" runat="server" Width="100%">
    <table rules="rows">
        
        <tr>
            <td style="width:70px">
                Date
            </td>
            <td style="width:150px">
                <asp:TextBox ID="tarikh" runat="server" Width="100"><asp:CalendarExtender ID="CalendarExtender1"
                    runat="server" Format="dd/MM/yyyy" TargetControlID="tarikh">
                
            </td>
            <td style="width:100px">
            Contract No.
            </td>
            <td style="width:150px">
            KTMB <asp:TextBox ID="contractno" runat="server" Width="70px">

            </td>

          </tr>  
          <tr>
          <td style="width:70px">
                Tindakan
            </td>
            <td style="width:150px">
            <asp:DropDownList ID="ddl_tindakan" runat="server">
            <asp:ListItem>Pilih
            <asp:ListItem>Redisc
        <asp:ListItem>Reprofile
        <asp:ListItem>Bearing Service
        <asp:ListItem>Other
                
                
            </td>
            <td style="width:100px">
            Jenis Tayar
            </td>
            <td style="width:150px">
            <asp:DropDownList ID="ddl_jenisroda" runat="server">
                <asp:ListItem>Pilih
                <asp:ListItem>16T
                <asp:ListItem>14T
                <asp:ListItem>Koyo Large
                <asp:ListItem>KOROS
                <asp:ListItem>PGC
                <asp:ListItem>GH
                <asp:ListItem>81 class_motor
                <asp:ListItem>81 class_trailer
                <asp:ListItem>82 class_motor
                <asp:ListItem>82 class_trailer
                <asp:ListItem>83 class_motor
                <asp:ListItem>83 class_trailer
                <asp:ListItem>23 class
                <asp:ListItem>24 class
                <asp:ListItem>25 class
                <asp:ListItem>26 class
                <asp:ListItem>29 class
                

            </td>
            
          </tr>
          <tr>
          <td style="width:100px">
          Wheel Record No
          </td>
          <td>
              <asp:TextBox ID="wheelno" runat="server">
          </td>
          <td style="width:100px">
          SMH Ref. No.
          </td>
          <td>
              <asp:TextBox ID="smhref" runat="server">
          </td>
          
          </tr>
          
    </table>
    <br />
    <br />
        <asp:Button ID="tambah" runat="server" Text="Tambah" OnClick="tambah_Click" />
        <asp:Button ID="Button1" runat="server" Text="Kemaskini" Visible="False" OnClick="UpdateRecord"/>
        <asp:Label ID="authorizedby" runat="server" Text="" Visible="False">
    <asp:Label ID="dono" runat="server" Text="" Visible="False">
    <asp:Label ID="Label1" runat="server" Text="" Visible="False">
    <asp:Label ID="status" runat="server" Text="" Visible="False">
    <asp:Label ID="kuantiti" runat="server" Text="" Visible="False">
    <asp:Label ID="Label2" runat="server" Text="" Visible="False">
    <br />
    <br />
    <asp:GridView ID="grvDO" runat="server" ItemStyle-Width="30px" AutoGenerateColumns="False" 
    Width="70%" BorderColor="#486070" HeaderStyle-BackColor="#D8E8F0"  
    AlternatingRowStyle-BackColor="White" BackColor="White" FooterStyle-BackColor="#D8E8F0" 
    FooterStyle-BorderColor="#486070" ShowFooter="True"  >
                <columns>
                    <asp:TemplateField HeaderText="Bil" ItemStyle-Width="20px">
    <itemtemplate>
        <asp:Label ID="bil" runat="server" Text=<%# Container.DataItemIndex+1 %>>
    </itemtemplate>
    
                    <asp:TemplateField HeaderText="Wheel Record No" ItemStyle-Width="50px">
                        <itemtemplate>
                            <asp:Label ID="wheel" runat="server" Text=''<%#Eval("Wheel Record No") %>'' >
                        </itemtemplate>
                    
                    <asp:TemplateField HeaderText="SMH" ItemStyle-Width="50px">
                        <itemtemplate>
                            <asp:Label ID="smh" runat="server" Text=''<%#Eval("SMH") %>''>
                        </itemtemplate>
                    
                    <asp:TemplateField HeaderText="Tindakan" ItemStyle-Width="50px">
                        <itemtemplate>
                            <asp:Label ID="tindakan" runat="server"  Text=''<%#Eval("tindakan") %>''>>
                        </itemtemplate>
                    
                  <asp:TemplateField HeaderText="Jenis Tayar" ItemStyle-Width="50px">
                        <itemtemplate>
                            <asp:Label ID="axletype" runat="server" Text=''<%#Eval("Jenis Tayar") %>''>
                        </itemtemplate>
                    
                    
        <asp:TemplateField ItemStyle-Width="10px">
        <itemtemplate>
        <asp:ImageButton ID="ImageButton1" runat="server" ImageAlign="AbsMiddle" 
                ImageUrl="~/Library/img/24/pencil.png" OnClick="ImageButton1_Click"
                ToolTip="Click to Edit"  />
        </itemtemplate>
            
            <asp:TemplateField ItemStyle-Width="10px">
            <itemtemplate>
             <asp:ImageButton ID="ImageButton2" runat="server" ImageAlign="AbsMiddle" ImageUrl="~/Library/img/24/bin_closed.png" ToolTip="Click to Delete" />
            </itemtemplate>
            <<br mode="hold" />            
                </columns>
                               
              
            <br />
            

                <asp:Button ID="btnSave" runat="server" Text="Hantar" OnClick="btnSave_Click" />
    </blockquote>

推荐答案

您能否点击以下链接:



通过事件实现累计总计和全选功能在ASP.NET GridView中 [ ^ ]
Could you please follow the link below:

Implementing Cumulative total and Select All functionality with Events in ASP.NET GridView[^]


这篇关于如何将gridview值更新为文本框并将其绑定回gridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆