DropDownList 事件未触发,自动回发设置为 true



我的网页中有DropDownList,每当用户更改DropDownList中的选定值时

,我想填写文本框。我的问题是当我更改此值时,此事件未触发。有趣的是,只有当我更改值并按下按钮时,才会触发此事件,从而创建新请求。

我尝试将自动回发值更改为 true,尝试更改视图状态模式,并尝试在 textChanged 事件上触发此函数。 我还在数据绑定函数之前添加了条件 !isPostBack。

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>

编辑:

我有两个相互通信的"后端"。首先创建 REST 请求,然后接受此请求,并根据查询字符串从数据库中获取所需的值,或者在这种情况下,生成 QR 码。

当我按下按钮时,它会创建请求。例如:

protected void buttonGenerateQrCode_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://localhost:44333/Backend2.aspx?generateqrcode=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();
}

在与数据库通信的后端中,此请求是否被接受:

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 似乎无法执行,因为表单上不存在__EVENTTARGET__EVENTARGUMENT元素。 在生成的 HTML 上,表单应包含以下隐藏元素:

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

您应该尝试确认是否正在生成这些元素,如果没有,请尝试跟踪它们不存在的原因。 您可能需要使用<asp:Form>标签而不是<form runat="server">但这实际上只是我此时的猜测。

最新更新