Передать данные в сохраненный процесс и вернуть данные в gridview - PullRequest
0 голосов
/ 02 декабря 2011

Я пишу веб-страницу asp .net, чтобы передавать данные текстового поля в сохраненный процесс и возвращать сетку данных по нажатию кнопки.Я начал писать код, но меня смущает то, как я позволяю элементам управлять действиями на странице.Т.е. нажмите кнопку, чтобы передать значения полей в сохраненный процесс, чтобы получить данные обратно.

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

<!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 id="Head1" runat="server">
    <title>MSS Archived Data</title>

    <script language="javascript" type="text/javascript">
// <!CDATA[
// ]]>
    </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table>
                <tr>
                    <td>
                        <asp:Label ID="Label1" runat="server" Text="First Name: "></asp:Label>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                        <asp:Label ID="Label2" runat="server" Text="Last Name: "></asp:Label>
                        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                        <asp:Label ID="Label3" runat="server" Text="Street: "></asp:Label>
                        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="Label4" runat="server" Text="City: "></asp:Label>
                        <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                        <asp:Label ID="Label5" runat="server" Text="State: "></asp:Label>
                        <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
                        <asp:Label ID="Label6" runat="server" Text="Zip: "></asp:Label>
                        <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Button ID="Button1" runat="server" Text="Search" OnClick="Button1_Click" />
                    </td>                    
                </tr>
            </table>
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
                DataKeyNames="actID" DataSourceID="PersEWD_Database">
                <Columns>
                    <asp:BoundField DataField="actID" HeaderText="actID" ReadOnly="True" InsertVisible="False"
                        SortExpression="actID"></asp:BoundField>
                    <asp:BoundField DataField="actLogCreateDate" HeaderText="actLogCreateDate" SortExpression="actLogCreateDate">
                    </asp:BoundField>
                    <asp:BoundField DataField="actCustomerID" HeaderText="actCustomerID" SortExpression="actCustomerID">
                    </asp:BoundField>
                    <asp:BoundField DataField="actCampaignID" HeaderText="actCampaignID" SortExpression="actCampaignID">
                    </asp:BoundField>
                    <asp:BoundField DataField="actActionDate" HeaderText="actActionDate" SortExpression="actActionDate">
                    </asp:BoundField>
                    <asp:BoundField DataField="actActionCode" HeaderText="actActionCode" SortExpression="actActionCode">
                    </asp:BoundField>
                    <asp:BoundField DataField="actRelevantInfo" HeaderText="actRelevantInfo" SortExpression="actRelevantInfo">
                    </asp:BoundField>
                    <asp:BoundField DataField="actUnderwriter" HeaderText="actUnderwriter" SortExpression="actUnderwriter">
                    </asp:BoundField>
                    <asp:BoundField DataField="actAmount" HeaderText="actAmount" SortExpression="actAmount">
                    </asp:BoundField>
                    <asp:BoundField DataField="actPolicyType" HeaderText="actPolicyType" SortExpression="actPolicyType">
                    </asp:BoundField>
                    <asp:BoundField DataField="actPolicyNumber" HeaderText="actPolicyNumber" SortExpression="actPolicyNumber">
                    </asp:BoundField>
                    <asp:BoundField DataField="actReasonCode" HeaderText="actReasonCode" SortExpression="actReasonCode">
                    </asp:BoundField>
                    <asp:BoundField DataField="actSSN" HeaderText="actSSN" SortExpression="actSSN"></asp:BoundField>
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.Odbc;
using System.Web.Configuration;

public partial class _Default : System.Web.UI.Page
{
    DataSet ds = new DataSet();

    //Here we declare the parameter which we have to use in our application
    SqlCommand cmd = new SqlCommand();
    SqlParameter sp1 = new SqlParameter();
    SqlParameter sp2 = new SqlParameter();
    SqlParameter sp3 = new SqlParameter();
    SqlParameter sp4 = new SqlParameter();
    SqlParameter sp5 = new SqlParameter();
    SqlParameter sp6 = new SqlParameter();

    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //string myConnection = "dsn=dsnNAME";
        string serverName = "serverName";
        string dbName = "dbName";
        string storedProcName = "";
        string parameterName = "@RecordType";
        int parameterValue = 0;
        string myConnString = "DRIVER={SQL Server};SERVER="+serverName+";Trusted_connection=yes;DATABASE="+dbName+";";




        OdbcConnection myConnection = new OdbcConnection(myConnString);
        myConnection.Open();
        //myConnection.Connection = myConnection;
        myConnection.CommandType = CommandType.StoredProcedure;
        myConnection.CommandText = "{call " + storedProcName + " (?, ?, ?, ?, ?, ?) }";
        cmd.Parameters.Add("@fName", SqlDbType.VarChar).Value = TextBox1.Text;
        cmd.Parameters.Add("@lName", SqlDbType.VarChar).Value = TextBox2.Text;
        cmd.Parameters.Add("@street", SqlDbType.VarChar).Value = TextBox3.Text;
        cmd.Parameters.Add("@city", SqlDbType.VarChar).Value = TextBox4.Text;
        cmd.Parameters.Add("@state", SqlDbType.VarChar).Value = TextBox5.Text;
        cmd.Parameters.Add("@zip", SqlDbType.varchar).Value = TextBox6.Text;

        myConnection.ExecuteNonQuery();
        myConnection.Connection.Close();
    }

}

Спасибо

Ответы [ 3 ]

1 голос
/ 02 декабря 2011

Жизненный цикл вашей привязки данных выглядит примерно так:

  1. Кнопка Click - Ваша кнопка будет вызывать событие Click, когда пользователь нажимает его. Отсюда вы захотите вызвать вашу хранимую процедуру, используя значение в TextBox.

  2. Извлечение данных - вы выполняете хранимую процедуру, используя указанный параметр, и получаете набор элементов данных обратно. В зависимости от того, какая версия .Net Framework у вас имеется, я бы порекомендовал либо использовать TableAdapters (более старая технология, которая дает вам структуру таблицы, которая отражает вашу базу данных), либо использовать LINQ / Entity Framework (более новая технология, дает вам объект на основе вашей таблицы и предоставляет список этих объектов на основе запроса). LINQ / EF - это что-то удивительное, но некоторые среды разработки пока не поддерживают .Net 3.5.

  3. Привязка данных - после того, как вы вернете данные из хранимой процедуры, вы установите их в качестве источника данных вашего GridView, а затем вызовете метод DataBind. Элемент управления GridView будет автоматически обрабатывать итерируемые вами данные. Если вам нужно выполнить некоторые пользовательские столбцы / форматирование, вы переопределите событие RowDataBound .

В каждом аспекте этого процесса есть много нюансов и деталей, но, надеюсь, это даст вам базовое понимание того, с чего начать.

0 голосов
/ 02 декабря 2011

Несколько указателей:

1) Используйте <asp:textbox id="Text1" runat="server"/> вместо <input name="CustomerID" id="Text1" type="text" /> - обратите внимание на runat = "server", это позволяет параметрам выбора источника данных найти его входной источник.

2) Направьте ваш источник данных gridview на ваш sqldatasource, если это действительно то, откуда поступают данные. Иначе, где определен источник данных «PersEWD_Database»?

3) Сделайте, чтобы ваш sqlatasource sql-скрипт возвращал все поля, необходимые для привязки к сетке, а не только CustomerID.

4) Удалите пустой блок <script>, если он вам не нужен.

5) Удалите OnSelecting="Database_Selecting", если вам это не нужно.

6) Измените <asp:Button> onclick() на onclick="ButtonSearch_Click" и внедрите обработчик событий ButtonSearch_Click в коде для перепечатки страницы. Возможно, вы можете оставить обработчик событий пустым, если вам не нужно ничего делать, кроме как загружать сетку с введенным идентификатором клиента.

0 голосов
/ 02 декабря 2011

Ты почти у цели.Вам необходимо установить в команде select имя сохраненного процесса, а затем установить для SelectCommandType значение StoredProcedure.Затем установите PropertyName вашего ControlParameter.

Это позволит настроить ваш GridView в качестве привязки данных к значению текстового поля при обратной передаче (нажатие кнопки может вызвать обратную передачу)

Также установите свой GridView.DataSourceID для соответствия идентификатору вашего SqlDataSource.

 <asp:SqlDataSource ID="Database" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString %>"
            ProviderName="<%$ ConnectionStrings:Database_ConnectionString.ProviderName %>"
            SelectCommand="dbo.yourstoredproc" SelectCommandType="StoredProcedure"
            OnSelecting="Database_Selecting">
            <SelectParameters>
                <asp:ControlParameter ControlID="Text1" Name="CustomerID" PropertyName="Text" />
            </SelectParameters>
        </asp:SqlDataSource>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...