我正在编写一个asp .net网页,将文本框数据传递给存储过程,并在按钮点击时返回数据的gridview。我已经开始编写代码,但我对如何允许项目控制页面上的操作感到困惑。即按钮单击将字段值传递给存储过程以获取数据。
<%@ 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();
}
}
由于
答案 0 :(得分:1)
数据绑定的生命周期看起来像这样:
按钮单击 - 当用户按下该按钮时,您的按钮将触发Click事件。从这里开始,您将需要使用TextBox中的值调用存储过程。
数据检索 - 使用指定的参数执行存储过程,然后获取数据元素的集合。根据您可用的.Net Framework版本,我建议使用TableAdapters(旧技术,为您提供镜像数据库的表结构)或使用LINQ/Entity Framework(更新的技术,给出你是一个基于你的表的对象,并根据查询提供这些对象的列表)。 LINQ / EF是一些令人惊奇的东西,但是一些开发环境仍然不能达到.Net 3.5。
数据绑定 - 从存储过程中获取数据后,您将其设置为GridView的DataSource,然后调用DataBind方法。 GridView控件将自动处理迭代您提供的数据。如果您需要执行一些自定义列/格式设置,则会覆盖RowDataBound事件。
这个过程的每个方面都有很多细微差别和细节,但希望这能让你基本了解开始的事情。
答案 1 :(得分:0)
你快到了。您需要将select命令设置为存储过程的名称,然后将SelectCommandType设置为StoredProcedure。然后设置ControlParameter的PropertyName。
这会将您的GridView设置为数据绑定到回发时文本框的值(按钮单击可能会导致回发)
还要将GridView的DataSourceID设置为与SqlDataSource的ID匹配。
<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>
答案 2 :(得分:0)
一些指示:
1)使用<asp:textbox id="Text1" runat="server"/>
而不是<input name="CustomerID" id="Text1" type="text" />
- 注意runat =“server”这允许数据源选择参数找到其输入源。
2)将gridview datasourceid指向sqldatasource(如果确实是数据的来源)。否则,“PersEWD_Database”数据源定义在哪里?
3)使你的sqldatasource sql脚本返回所有需要绑定在网格上的字段而不仅仅是CustomerID。
4)除非你需要,否则删除空的<script>
块。
5)除非您需要,否则请删除OnSelecting="Database_Selecting"
。
6)将<asp:Button> onclick()
更改为onclick="ButtonSearch_Click"
并在后面的代码中实现ButtonSearch_Click
事件处理程序以重新发布该页面。如果您不需要执行任何操作,除了使用键入的客户ID加载网格外,您可能会将事件处理程序留空。