C# 如何在asp.net中在窗体之间传递数据
我使用C# 如何在asp.net中在窗体之间传递数据,c#,sql,asp.net,checkbox,datalist,C#,Sql,Asp.net,Checkbox,Datalist,我使用数据列表创建表单,并使用复选框完成表单。如下 <asp:DataList ID="DataListTest" runat="server" OnPreRender="PreTes"> <ItemTemplate> <table cellpadding="0" cellspacing="0"> <tr> <td> <asp:Label ID="lblHea
数据列表
创建表单,并使用复选框
完成表单。如下
<asp:DataList ID="DataListTest" runat="server" OnPreRender="PreTes">
<ItemTemplate>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Label ID="lblHeader" runat="server"></asp:Label> <!-- Telephone, Bussines System -->
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblsubheader" runat="server" /></td> <!-- Oracle, EPM, CRM (Muncul di Form) -->
</tr>
<tr>
<td>
<asp:HiddenField ID="idJenisAccess" runat="server" Value='<%# Eval("id_jenis_access") %>' />
<asp:HiddenField ID="subhd" runat="server" Value='<%# Eval("sub_jenis") %>' /> <!-- Oracle, EPM, CRM (nama sub jenis) -->
<asp:HiddenField ID="id_access" runat="server" Value='<%# Eval("id_access") %>' /><!-- Output = ACT5, ACBS1 -->
<asp:HiddenField ID="hd" runat="server" Value='<%# Eval("nama_jenis") %>' /><!-- Output = Telephone, Bussines System -->
<asp:HiddenField ID="hdstatus" runat="server" Value='<%# Eval("status") %>' /> <!-- Output = 1 or 0 -->
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="cbCountryName" runat="server" Text='<%# Eval("nama_access") %>' /> <!-- Output = Local, Handphone, Project -->
<asp:TextBox ID="testme" runat="server" Text="" Visible="false" /> <!-- Output = Textbox for all -->
</td>
</tr>
<tr>
<td><asp:Label ID="lblReason" runat="server" Visible="false" text="Reason : "/>
<asp:TextBox ID="txtReason" runat="server" Visible="false" />
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblDescription" runat="server" Visible="false" text="Description : "/>
<asp:TextBox ID="txtDescription" runat="server" Text="" Visible="false" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
这是我的预渲染数据列表
,我称之为预测试
。我的代码也是将数据显示为复选框
protected void PreTes(object sender, EventArgs e)
{
string temp = "";
string subtemp ="";
foreach (DataListItem item in DataListTest.Items)
{
Label objLabel = item.FindControl("lblHeader") as Label; /* Output = Telepon, Business System (nama jenis access) */
Label subjenis = item.FindControl("lblsubheader") as Label; /* Output = Oracle, CRM, EPM (nama sub jenis access) */
Label lblreason = (Label)item.FindControl("lblReason"); /* Output = Reason : (label reaseon) */
Label lbldescription = (Label)item.FindControl("lblDescription"); /* Output = Description : (label Description) */
TextBox txtOther = item.FindControl("testme") as TextBox; /* Output = textbox except reason and description */
TextBox txtReason = item.FindControl("txtReason") as TextBox; /* Output = textbox on Reason */
TextBox txtDescription = item.FindControl("txtDescription") as TextBox; /* Output = textbox on Description */
CheckBox objName = item.FindControl("cbCountryName") as CheckBox; /* Output = Local, Internet, Email (nama access) */
HiddenField objHD = item.FindControl("hd") as HiddenField; /* Output = Telpon, Business System (if deleted, nama jenis will be show up every single access name) */
HiddenField subobjHD = item.FindControl("subhd") as HiddenField;
HiddenField id_access = (HiddenField)item.FindControl("id_access");
HiddenField id_jenis = (HiddenField)item.FindControl("idJenisAccess");
HiddenField status = (HiddenField)item.FindControl("hdstatus");
if (temp != objHD.Value)
{
if (objHD.Value=="Others" && id_access.Value == "ACT5")
{
lblreason.Visible = true;
txtReason.Visible = true;
lbldescription.Visible = true;
txtDescription.Visible = true;
}
temp = objHD.Value;
objLabel.Text = temp + "<br/>";
}
if (subtemp != subobjHD.Value)
{
subtemp = subobjHD.Value;
subjenis.Text = subtemp+"<br/>";
}
if (status.Value == "1")
{
txtOther.Visible = true;
}
}
}
我的问题是
如何将用户选中的所有复选框
发送到其他web表单
例如:
当用户选中一些复选框并单击提交时,我会将选中的所有数据(如id\u access
、id\u jenis
)和textbox(id=“testme”)
插入数据库
当用户单击“提交”按钮时,所有过程都将发生。当单击“提交”按钮时,我希望选中的复选框中的所有数据都显示在另一个页面上(页面名称=“SendingActivation”)
比如“您选择:id\u access id\u jenis(输入)id\u access id\u jenis(输入)id\u access id\u jenis(与所选数据相同)
仅供参考:我也是c#编程新手,所以请一步一步地帮助我他们有很多方法可以实现这一点
- 应用程序变量
- 会话变量
- 响应。重定向
- 厨师
- 使用POST方法
应用程序变量
通过:
Application["id_access"] = "A0123";
Response.Redirect("SendingActivation.aspx?id_access="A0123");
HttpCookie id_access= new HttpCookie("Name");
id_access.Value="A0123";
访问:
string id_access = Application["id_access"].ToString();
string id_access = Request.QueryString["id_access"];
string id_access= Request.Cookies["Name"].Value;
string id_access= Request.Form["ControlID"];
会话变量
分配:
Session["id_access"] = "A0123";
阅读:
string id_access = Session["id_access"];
响应。重定向
通过:
Application["id_access"] = "A0123";
Response.Redirect("SendingActivation.aspx?id_access="A0123");
HttpCookie id_access= new HttpCookie("Name");
id_access.Value="A0123";
访问:
string id_access = Application["id_access"].ToString();
string id_access = Request.QueryString["id_access"];
string id_access= Request.Cookies["Name"].Value;
string id_access= Request.Form["ControlID"];
厨师
通过:
Application["id_access"] = "A0123";
Response.Redirect("SendingActivation.aspx?id_access="A0123");
HttpCookie id_access= new HttpCookie("Name");
id_access.Value="A0123";
访问:
string id_access = Application["id_access"].ToString();
string id_access = Request.QueryString["id_access"];
string id_access= Request.Cookies["Name"].Value;
string id_access= Request.Form["ControlID"];
使用POST方法
通过:
Application["id_access"] = "A0123";
Response.Redirect("SendingActivation.aspx?id_access="A0123");
HttpCookie id_access= new HttpCookie("Name");
id_access.Value="A0123";
在源页面中的按钮
控件中,在提交表单时发布值。将控件的PostBackUrl
属性设置为要将ASP.NET网页发布到的页面的URL
访问:
string id_access = Application["id_access"].ToString();
string id_access = Request.QueryString["id_access"];
string id_access= Request.Cookies["Name"].Value;
string id_access= Request.Form["ControlID"];
像这样更改InsertActivationDetail方法。我创建了一个字符串,在其中保存MaxActivationId。我假设在数据库中插入数据时MaxActivationId是唯一的。在下一页中,您将收到此id作为查询字符串,并根据MaxActivation id从数据库中获取数据,并在页面中显示它
private void InsertActivationDetail()
{
//Mengambil nilai idActivation
int MaxActivationId = GetGenerateActivationID();
//
string id = "";
foreach (DataListItem objitem in DataListTest.Items)
{
/* To get data from the form , then insert into database */
CheckBox cbCountryName = (CheckBox)objitem.FindControl("cbCountryName");
HiddenField id_access = (HiddenField)objitem.FindControl("id_access");
HiddenField id_jenis_access = (HiddenField)objitem.FindControl("idJenisAccess");
TextBox txtOther = objitem.FindControl("testme") as TextBox;
TextBox txtreason = objitem.FindControl("txtReason") as TextBox;
TextBox txtdescription = objitem.FindControl("txtDescription") as TextBox;
/* Get data end, then Inserting the data (below) */
/*Check if datalist is null or not*/
if (objitem != null)
{
/*if not nul, then check the checkboxes, is null or not*/
if (cbCountryName.Checked == true)
{
/*if not null, then insert the data */
conn.Open();
sql = "INSERT INTO detil_activation (id_activation_access, id_jenis_access, id_access, " +
"keterangan, reason, description) " +
"VALUES ('" +
MaxActivationId + "', '" + id_jenis_access.Value + "', '" + id_access.Value + "','" +
txtOther.Text + "','" + txtreason.Text + "','" + txtdescription.Text + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
ids += MaxActivationId.ToString() + ",";
/* Inserting data is done */
}
}
}
id = MaxActivationId.ToString();
Response.Redirect("yourpage?maxID=" + id);
}
你想要其他页面上的所有数据,比如复选框和文本框的值,还是只想要复选框?你可以根据id_jenis_访问和id_访问从数据库中获取数据吗?是的,我可以获取id_jenis_访问和id_访问的数据,我想显示它。例如:用户检查2个类别中的3个访问(jenis_访问的名称)假设有2个类别。互联网和电话。类别互联网有3个访问权限,比如VPN、电子邮件、电子申请。类别电话有2个访问权限,比如本地、本地。在类别互联网上,用户检查电子邮件和类别telepon都已检查。在第2页中,“您应该选择电子邮件、本地、本地、本地”“就这样。明白吗?你的意思是,我应该在我的申请表上加上5个方法中的1个?在第一页还是第二页?我应该在哪里添加所有“访问”?新功能?还是在加载?而且,我的数据不是固定的。我的意思是,我不知道用户选择什么id_访问。那么我是如何动态地得到它的呢?你可以使用5个选项中的任何一个。分配/传递应该在第一页访问在重定向页中,数据呢?我的数据不像id\u access=“A0123”那样固定。无论用户在复选框上选择什么,它都必须是动态的。对于静态数据,如“A0123”,它不能是动态的。因为MaxActivationId在我的表中,所以可以重复。我需要id_访问和id_jenis_直接访问?我可以吗?正如您所说,用户可以根据需要选中任意多个复选框,因此所有id_访问和id_jenis_访问都将针对MaxActivationId保存。因此,您可以针对MaxActivationId获取所有选中的复选框。我的列表类似于此id_详细信息| id_激活|访问| id| jenis|u访问自动启动MaxActivationIdid_访问id_jenis ex:id_详情| id_激活| id_访问| id_jenis访问1 1 407 12 2 1 409 12 3 1 305 8 4 1 201 15类似那个我无法在注释中创建格式表。希望您理解将为单个MaxActivationId插入的所有数据,以便您可以从MaxActivationId中获取所有数据,该MaxActivationId是为复选框插入的。只需在SQl中运行查询,您就会得到结果。如果仍然有问题,请告诉我。是的,它起作用了。但是,如果数据大于1,现在如何在第2页上显示数据?