понедельник, 14 ноября 2011 г.

Insert data from popup to gridview

I' d like to post how insert data from popup to gridview after popup close in editing mode.For example, we have gridview reading data from table "testTable". We want update "Code" column with value from other table.
So, in edit mode, in "Code" column, we have <EditItemTemplate> which contains textbox and choose button.

After the choose button is pressed on, popup window appears, which contains gridview with data from codeTable. You have just focus the row which contains code value you need and press "OK".

The code value will fix in textbox in Code column, then press "Update".


Here is the code:
Creating testTable
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[testTable](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Data] [nvarchar](250) NULL,
    [Status] [nvarchar](50) NULL,
    [Code] [nvarchar](50) NULL,
 CONSTRAINT [PK_testTable] PRIMARY KEY CLUSTERED
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Creating codeTable
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[codeTable](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Code] [nvarchar](50) NOT NULL,
    [City] [nvarchar](250) NOT NULL,
 CONSTRAINT [PK_codeTable] PRIMARY KEY CLUSTERED
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Inserting data in tables
insert into testTable ([Data], [Status]) values ('Data row 1', 'Success')
insert into testTable ([Data], [Status]) values ('Data row 2', 'Fault')
insert into testTable ([Data], [Status]) values ('Data row 3', 'Success')

insert into codeTable ([Code], [City]) values ('0101', 'City 1')
insert into codeTable ([Code], [City]) values ('0102', 'City 2')
insert into codeTable ([Code], [City]) values ('0103', 'City 3')


TestTable update procedure
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateTestTable]
    @ID int,
    @Code nvarchar(50)
AS
BEGIN
  
    SET NOCOUNT ON;

    UPDATE testTable SET Code = @Code WHERE ID = @ID

END

GO

SelectRowFromPopupWindow.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SelectRowFromPopupWindow.aspx.cs" Inherits="SelectRowFromPopupWindow" %>

<%@ Register Assembly="DevExpress.Web.v10.2, Version=10.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
    Namespace="DevExpress.Web.ASPxPopupControl" TagPrefix="dx" %>

<%@ Register Assembly="DevExpress.Web.ASPxGridView.v10.2, Version=10.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
    Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>

<%@ Register assembly="DevExpress.Web.ASPxEditors.v10.2, Version=10.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxEditors" tagprefix="dx" %>

<!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>
    <script language="javascript" type="text/javascript">
        function getFocusedLineValue() {
            ASPxGridView2.GetRowValues(ASPxGridView2.GetFocusedRowIndex(), 'ID;Code', OnGetRowValues);
            popupCode.Hide();
        }

        function OnGetRowValues(values) {
            textCode.SetText(values[1]);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False"
            ClientIDMode="AutoID" DataSourceID="SqlDataSource1" KeyFieldName="ID">
            <SettingsEditing Mode="Inline" />
            <Columns>
                <dx:GridViewDataTextColumn FieldName="ID" ReadOnly="True" VisibleIndex="0" Width="50px">
                    <EditFormSettings Visible="False" />
                    <EditItemTemplate></EditItemTemplate>
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn FieldName="Data" VisibleIndex="1" Width="100px">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn FieldName="Status" VisibleIndex="2" Width="80px">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn FieldName="Code" VisibleIndex="3" Width="100px">
                    <DataItemTemplate>
                        <dx:ASPxLabel ID="labelCode" ClientInstanceName="labelCode" runat="server"
                            Text='<%# Bind("Code") %>'>
                        </dx:ASPxLabel>
                </DataItemTemplate>
                <EditItemTemplate>
                    <table>
                        <tr>
                            <td>
                                <dx:ASPxTextBox ID="textCode" ClientInstanceName="textCode"
                                     runat="server" Text="<%#Bind('Code') %>" Width="70px">
                                </dx:ASPxTextBox>
                            </td>
                            <td>
                                <dx:ASPxButton ID="chooseCode" ClientInstanceName="chooseCode" runat="server"
                                    AutoPostBack="false" Text="..." >
                                    <ClientSideEvents Click="function(s,e){ popupCode.Show(); }" />
                                </dx:ASPxButton>
                            </td>
                        </tr>
                    </table>
                </EditItemTemplate>
                </dx:GridViewDataTextColumn>
                <dx:GridViewCommandColumn VisibleIndex="4">
                    <EditButton Visible="True">
                    </EditButton>
                </dx:GridViewCommandColumn>
            </Columns>
        </dx:ASPxGridView>

        <dx:ASPxPopupControl ID="popupCode" runat="server" Modal="true" ClientInstanceName="popupCode"
                            PopupHorizontalAlign="WindowCenter" PopupVerticalAlign="WindowCenter" Width="300px" >
            <ContentCollection>
                <dx:PopupControlContentControl ID="PopupControlContentControl2" runat="server">
                    <dx:ASPxGridView ID="ASPxGridView2" runat="server" ClientIDMode="AutoID" ClientInstanceName="ASPxGridView2"
                        AutoGenerateColumns="False" DataSourceID="SqlDataSource2" KeyFieldName="ID" Width="100%">
                        <Columns>
                            <dx:GridViewDataTextColumn FieldName="ID" ReadOnly="True"
                                ShowInCustomizationForm="True" VisibleIndex="0">
                                <EditFormSettings Visible="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="Code" ShowInCustomizationForm="True"
                                VisibleIndex="1">
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="City" ShowInCustomizationForm="True"
                                VisibleIndex="2">
                            </dx:GridViewDataTextColumn>
                        </Columns>
                        <SettingsBehavior AllowFocusedRow="True"/>
                    </dx:ASPxGridView>
                    <dx:ASPxButton ID="btnChoose" runat="server" Text="OK" AutoPostBack="false" ClientInstanceName="btnChoose" >
                        <ClientSideEvents Click="function(s, e) { getFocusedLineValue(); } "/>
                    </dx:ASPxButton>
                </dx:PopupControlContentControl>
            </ContentCollection>
        </dx:ASPxPopupControl>


        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
            SelectCommand="SELECT [ID], [Data], [Status], [Code] FROM [testTable]"
            UpdateCommand="UpdateTestTable" UpdateCommandType="StoredProcedure">
            <UpdateParameters>
                <asp:Parameter Name="ID" Type="Int32" />
                <asp:Parameter Name="Code" Type="String" />
            </UpdateParameters>
        </asp:SqlDataSource>

        <asp:SqlDataSource ID="SqlDataSource2" runat="server"
            ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
            SelectCommand="SELECT [ID], [Code], [City] FROM [codeTable]" >
        </asp:SqlDataSource>
    </div>
    </form>
</body>
</html>

SelectRowFromPopupWindow.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class SelectRowFromPopupWindow : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

Комментариев нет:

Отправить комментарий