簡體   English   中英

DropDownList 事件未在 AutoPostBack 設置為 true 時觸發

[英]DropDownList event not firing with AutoPostBack set to true

我的網頁中有 DropDownList,每次用戶更改 DropDownList 中的選定值時,我都想填充 TextBox。

我的問題是當我改變這個值時這個事件沒有觸發。 有趣的是,只有當我更改值並按下按鈕時才會觸發此事件,這會創建新請求。

我嘗試將 AutoPostBack 值更改為 true,嘗試更改 ViewStateMode 並嘗試在 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">但這實際上只是我目前的猜測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM