C# DropDownList事件未在AutoPostBack设置为true时触发
我的网页中有DropDownList,每次用户更改DropDownList中的选定值时,我都会填充文本框 我的问题是,当我更改此值时,此事件未触发。有趣的是,只有当我更改值并按下按钮时才会触发此事件,这将创建新的请求 我尝试将AutoPostBack值更改为true,尝试更改ViewStateMode,并尝试在textChanged事件上启动此函数。 我还加了条件!isPostBack在数据绑定函数之前C# DropDownList事件未在AutoPostBack设置为true时触发,c#,asp.net,events,C#,Asp.net,Events,我的网页中有DropDownList,每次用户更改DropDownList中的选定值时,我都会填充文本框 我的问题是,当我更改此值时,此事件未触发。有趣的是,只有当我更改值并按下按钮时才会触发此事件,这将创建新的请求 我尝试将AutoPostBack值更改为true,尝试更改ViewStateMode,并尝试在textChanged事件上启动此函数。 我还加了条件!isPostBack在数据绑定函数之前 if (!IsPostBack) { LoadDatabaseContent();
if (!IsPostBack)
{
LoadDatabaseContent();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://localhost:44333/Backend2.aspx?update=true&id=" + DropDownList1.SelectedItem.Text);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
int count;
do
{
count = resStream.Read(buf, 0, buf.Length);
if (count != 0)
{
string tempString = Encoding.ASCII.GetString(buf, 0, count);
sb.Append(tempString);
}
}
while (count > 0);
Response.Write(sb.ToString());
//createTextBox.Text = sb.ToString();
resStream.Dispose();
response.Dispose();
}
下面是事件函数
if (!IsPostBack)
{
LoadDatabaseContent();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://localhost:44333/Backend2.aspx?update=true&id=" + DropDownList1.SelectedItem.Text);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
int count;
do
{
count = resStream.Read(buf, 0, buf.Length);
if (count != 0)
{
string tempString = Encoding.ASCII.GetString(buf, 0, count);
sb.Append(tempString);
}
}
while (count > 0);
Response.Write(sb.ToString());
//createTextBox.Text = sb.ToString();
resStream.Dispose();
response.Dispose();
}
ASPX代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Backend.aspx.cs" Inherits="APIS.Backend" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>
</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="buttonGeneratePdf" runat="server" OnClick="buttonGeneratePdf_Click" Text="Generate PDF" />
<br />
<asp:Button ID="buttonGenerateQrCode" runat="server" OnClick="buttonGenerateQrCode_Click" Text="Generate QR" />
<br />
</div>
<div>
<asp:DropDownList ID="DropDownList1" runat="server" Width="400px" Height="16px" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
OnTextChanged="DropDownList1_TextChanged">
</asp:DropDownList>
</div>
</form>
</body>
</html>
在与数据库通信的后端是否接受此请求:
protected void Page_Load(object sender, EventArgs e)
{
string generateQrCode = Request.QueryString["generateqrcode"];
if (generateQrCode != null && generateQrCode == "true") GenerateQrCode();
}
哪个调用函数:
private void GenerateQrCode()
{
string id = Request.QueryString["id"];
QRCodeGenerator qr = new QRCodeGenerator();
QRCodeData data = qr.CreateQrCode(id, QRCodeGenerator.ECCLevel.Q);
QRCode code = new QRCode(data);
Bitmap QRbmp = code.GetGraphic(5);
QRbmp.Save("pathtofile..\\QRcode.jpg");
}
Javascript似乎无法执行,因为表单上不存在元素
\uuu EVENTTARGET
和\uu EVENTARGUMENT
。在生成的HTML上,表单应包含以下隐藏元素:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
您应该尝试确认这些元素是否正在生成,如果没有,则尝试跟踪它们不存在的原因。您可能需要使用
标记而不是
,但这实际上只是我的猜测。您能否查看源代码并确认为下拉列表的HTML元素生成了javascript?当您在dropdownlist中选择新值时,您是否在控制台中看到任何JS错误?您还提到“按下按钮”,但我在此表单中没有看到任何错误。不,我看不到任何javascript,或者至少我不知道,我怎么能看到它。这是我的第一个web应用程序,所以我对它很陌生。在大多数web浏览器中,当你查看页面时,你应该能够右键单击并选择“查看源代码”。在chrome中,你可以按F12打开开发工具窗口,这将为你提供一个Javascript控制台。它引发此异常:Uncaught TypeError:无法在以下位置设置未定义的属性“value”:1:1