我有一个MultiView来添加有3个视图的员工。请让我知道正确的方法。这是我制作的代码不好的代码。每次修改内容时都会出现新的错误。
抱歉,我无法在此处发布代码。这是ASP.NET论坛上的帖子
http://forums.asp.net/t/1825476.aspx/1?Registration+using+MultiView+not+working+
namespace EmployeeMultiView.AdminPages
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
MultiView1.ActiveViewIndex = 0;
}
private void InsertInfo()
{
String KKSTechConnectionString = @"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=KKSTech;Integrated Security=True";
SqlConnection conn = new SqlConnection(KKSTechConnectionString);
//Session["sessFirstName"] = Request["textbox1"];
try
{
conn.Open();
String insertstring = @"Insert INTO Emp
(EmpID,FirstName,LastName,MiddleName,Mob1,Mob2,Phone,Email1,Email2,EmpDesc,Accno,IFSCCode,Branch,ApproxUnitPrice)
values (@EmpID,@FirstName,@LastName,@MiddleName,@Mob1,@Mob2,@Phone,@Email1,@Email2,@EmpDesc,@Accno,@IFSCCode,@Branch,@ApproxUnitPrice)";
if (MultiView1.ActiveViewIndex == 0)
{
SqlCommand cmd = new SqlCommand("insertstring", conn);
cmd.CommandText = insertstring;
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@EmpID", TextBox1.Text);
cmd.Parameters.AddWithValue("@FirstName", TextBox2.Text);
cmd.Parameters.AddWithValue("@LastName", TextBox3.Text);
cmd.Parameters.AddWithValue("@MiddleName", TextBox4.Text);
cmd.Parameters.AddWithValue("@Mob1", TextBox5.Text);
cmd.Parameters.AddWithValue("@Mob2", TextBox6.Text);
cmd.Parameters.AddWithValue("@Phone", TextBox7.Text);
cmd.Parameters.AddWithValue("@Email1", TextBox8.Text);
cmd.Parameters.AddWithValue("@Email2", TextBox9.Text);
cmd.Parameters.AddWithValue("@EmpDesc", TextBox10.Text);
}
else if (MultiView1.ActiveViewIndex == 1)
{
SqlCommand cmd2 = new SqlCommand("insertstring", conn);
cmd2.CommandText = insertstring;
cmd2.CommandType = CommandType.Text;
cmd2.Parameters.AddWithValue("@Accno", TextBox11.Text);
cmd2.Parameters.AddWithValue("@IFSCCode", TextBox12.Text);
cmd2.Parameters.AddWithValue("@Branch", TextBox13.Text);
cmd2.Parameters.AddWithValue("@ApproxUnitPrice", TextBox16.Text);
cmd2.ExecuteNonQuery();
}
else if (MultiView1.ActiveViewIndex == 2)
{
if (FileUpload1.HasFile)
{
byte[] productImage = FileUpload1.FileBytes;
String insertstring2 = @"Insert INTO Cert (CertName, CertLogo)
values(@CertName, @CertLogo)";
SqlCommand cmd3 = new SqlCommand("insertstring2", conn);
cmd3.CommandText = insertstring2;
cmd3.CommandType = CommandType.Text;
cmd3.Parameters.AddWithValue("@CertName", TextBox18.Text);
cmd3.Parameters.Add("@CertLogo", SqlDbType.VarBinary).Value = productImage;
cmd3.ExecuteNonQuery();
}
}
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Insert Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
Session.Abandon();
conn.Close();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
InsertInfo();
MultiView1.ActiveViewIndex += 1;
}
protected void Button2_Click(object sender, EventArgs e)
{
MultiView1.ActiveViewIndex -= 1;
}
protected void Button5_Click(object sender, EventArgs e)
{
Response.Write("Successful");
}
}
}
答案 0 :(得分:0)
您将在此处遇到的主要问题是,如上所述,您没有在第一个或第二个视图的插入查询中提供正确数量的参数。
一些可能对您有帮助的一般指示 -
我假设您的前端代码是某些,如 -
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="EmployeeMultiView.AdminPages._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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View runat="server">
<asp:Label AssociatedControlID="TextBox1" runat="server" Text="Label Text for TextBox1"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox2" runat="server" Text="Label Text for TextBox2"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox3" runat="server" Text="Label Text for TextBox3"></asp:Label>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox4" runat="server" Text="Label Text for TextBox4"></asp:Label>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox5" runat="server" Text="Label Text for TextBox5"></asp:Label>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox6" runat="server" Text="Label Text for TextBox6"></asp:Label>
<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox7" runat="server" Text="Label Text for TextBox7"></asp:Label>
<asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox8" runat="server" Text="Label Text for TextBox8"></asp:Label>
<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox9" runat="server" Text="Label Text for TextBox9"></asp:Label>
<asp:TextBox ID="TextBox9" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox10" runat="server" Text="Label Text for TextBox10"></asp:Label>
<asp:TextBox ID="TextBox10" runat="server"></asp:TextBox>
</asp:View>
<asp:View runat="server">
<asp:Label AssociatedControlID="TextBox11" runat="server" Text="Label Text for TextBox11"></asp:Label>
<asp:TextBox ID="TextBox11" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox12" runat="server" Text="Label Text for TextBox12"></asp:Label>
<asp:TextBox ID="TextBox12" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox13" runat="server" Text="Label Text for TextBox13"></asp:Label>
<asp:TextBox ID="TextBox13" runat="server"></asp:TextBox>
<asp:Label AssociatedControlID="TextBox16" runat="server" Text="Label Text for TextBox16"></asp:Label>
<asp:TextBox ID="TextBox16" runat="server"></asp:TextBox>
</asp:View>
<asp:View runat="server">
<asp:Label AssociatedControlID="FileUpload1" runat="server" Text="Label Text for FileUpload1"></asp:Label>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Label AssociatedControlID="TextBox18" runat="server" Text="Label Text for TextBox18"></asp:Label>
<asp:TextBox ID="TextBox18" runat="server"></asp:TextBox>
</asp:View>
</asp:MultiView>
<asp:Button ID="Button1" OnClick="Button1_Click" runat="server" Text="Next" />
<asp:Button ID="Button2" OnClick="Button2_Click" runat="server" Text="Previous" />
</div>
</form>
</body>
</html>
在这种情况下,我会像这样编写你的代码 -
using System;
using System.Data.SqlClient;
using System.Data;
namespace EmployeeMultiView.AdminPages
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
MultiView1.ActiveViewIndex = 0; //Even though you don't need braces here it helps readability
}
}
private void InsertInfo()
{
String KKSTechConnectionString = @"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=KKSTech;Integrated Security=True";
//Store connection strings in your web.config file wherever possible
//Session["sessFirstName"] = Request["textbox1"];
try
{
//Move connection so we don't open it unless we have to
string insertstring = @"Insert INTO Emp (EmpID,FirstName,LastName,MiddleName,Mob1,Mob2,Phone,Email1,Email2,EmpDesc,Accno,IFSCCode,Branch,ApproxUnitPrice)
values (@EmpID,@FirstName,@LastName,@MiddleName,@Mob1,@Mob2,@Phone,@Email1,@Email2,@EmpDesc,@Accno,@IFSCCode,@Branch,@ApproxUnitPrice)";
//Use switch/case to compare multiple values (see http://msdn.microsoft.com/en-us/library/vstudio/06tc147t.aspx)
switch (MultiView1.ActiveViewIndex)
{
case 0:
//Need all the SQL parameters so we don't try to insert to the database here
break;
case 1:
using (SqlConnection conn = new SqlConnection(KKSTechConnectionString))
{
SqlCommand cmd = new SqlCommand(insertstring, conn);
//cmd2.CommandText = insertstring; - also redundent
//cmd2.CommandType = CommandType.Text; - this is the default value so not needed
//Add the parameters from the first view here, these will rely on ViewState which must be enabled
cmd.Parameters.AddWithValue("@EmpID", TextBox1.Text);
cmd.Parameters.AddWithValue("@FirstName", TextBox2.Text);
cmd.Parameters.AddWithValue("@LastName", TextBox3.Text);
cmd.Parameters.AddWithValue("@MiddleName", TextBox4.Text);
cmd.Parameters.AddWithValue("@Mob1", TextBox5.Text);
cmd.Parameters.AddWithValue("@Mob2", TextBox6.Text);
cmd.Parameters.AddWithValue("@Phone", TextBox7.Text);
cmd.Parameters.AddWithValue("@Email1", TextBox8.Text);
cmd.Parameters.AddWithValue("@Email2", TextBox9.Text);
cmd.Parameters.AddWithValue("@EmpDesc", TextBox10.Text);
cmd.Parameters.AddWithValue("@Accno", TextBox11.Text);
cmd.Parameters.AddWithValue("@IFSCCode", TextBox12.Text);
cmd.Parameters.AddWithValue("@Branch", TextBox13.Text);
cmd.Parameters.AddWithValue("@ApproxUnitPrice", TextBox16.Text);
conn.Open();
cmd.ExecuteNonQuery();
}
break;
case 2:
if (FileUpload1.HasFile)
{
byte[] productImage = FileUpload1.FileBytes;
String insertstring2 = @"Insert INTO Cert (CertName, CertLogo)
values(@CertName, @CertLogo)";
using (SqlConnection conn = new SqlConnection(KKSTechConnectionString))
{
SqlCommand cmd3 = new SqlCommand(insertstring2, conn); //No quotes
//cmd3.CommandText = insertstring2; - Redundant
//cmd3.CommandType = CommandType.Text; - this is the default value so not needed
cmd3.Parameters.AddWithValue("@CertName", TextBox18.Text);
cmd3.Parameters.Add("@CertLogo", SqlDbType.VarBinary).Value = productImage;
conn.Open();
cmd3.ExecuteNonQuery();
}
}
break;
}
}
catch (SqlException ex)
{
string msg = "Insert Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
//Session.Abandon(); - this would run multiple times during the process
}
}
protected void Button1_Click(object sender, EventArgs e)
{
InsertInfo();
//Don't try to set active view index to non-existant view
if (MultiView1.ActiveViewIndex < MultiView1.Views.Count)
{
MultiView1.ActiveViewIndex += 1;
}
}
protected void Button2_Click(object sender, EventArgs e)
{
//Assuming this is a "previous button" - may not need conditional if this is in the second view
if (MultiView1.ActiveViewIndex > 0)
{
MultiView1.ActiveViewIndex -= 1;
}
}
protected void Button5_Click(object sender, EventArgs e)
{
Response.Write("Successful");
Session.Abandon(); //Move to end of operation
}
}
}