Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在中继器内更改选择时获取dropdownlist的值。_C#_Asp.net - Fatal编程技术网

C# 如何在中继器内更改选择时获取dropdownlist的值。

C# 如何在中继器内更改选择时获取dropdownlist的值。,c#,asp.net,C#,Asp.net,我在转发器中有四列,Expected,Accpet,DDL&一个面板在页面加载时不可见 若Expect列值和下拉选择值相同,那个么只有我想显示该面板,否则不显示 请帮助我,我没有得到dropdownlist的值,因为在选择更改时,整个中继器正在重新填充,我无法得到一个值。 有人能帮我吗 任何可能的办法都可以 CSS <style> .main { width: 100%; } .inner

我在转发器中有四列,Expected,Accpet,DDL&一个面板在页面加载时不可见

若Expect列值和下拉选择值相同,那个么只有我想显示该面板,否则不显示

请帮助我,我没有得到dropdownlist的值,因为在选择更改时,整个中继器正在重新填充,我无法得到一个值。 有人能帮我吗

任何可能的办法都可以

CSS

<style>
        .main
        {
            width: 100%;
        }
        .inner
        {
            width: 90%;
        }
        .fst
        {
            width: 20%;
            float: left;
        }
        .scnd
        {
            width: 20%;
            float: left;
        }
        .thrd
        {
            width: 20%;
            float: left;
        }
        .frth
        {
            width: 20%;
            float: left;
        }

        .reset-this
        {
            clear:both;
        }
    </style>

梅因先生
{
宽度:100%;
}
内部的
{
宽度:90%;
}
.fst
{
宽度:20%;
浮动:左;
}
.scnd
{
宽度:20%;
浮动:左;
}
thrd先生
{
宽度:20%;
浮动:左;
}
.第一
{
宽度:20%;
浮动:左;
}
.重置这个
{
明确:两者皆有;
}
HTML

<div class="main">
        <div class="inner">
            <div class="fst">
                Except
            </div>
            <div class="scnd">
                Accpet
            </div>
            <div class="thrd">
                DDL
            </div>
            <div class="frth">
                Panel
            </div>
            <div class="reset-this">
            </div>
        </div>
        <div class="reset-this">
        </div>
        <br />
        <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
            <ItemTemplate>
                <div class="inner">
                    <div class="fst">
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("Expected") %>'></asp:Label>
                    </div>
                    <div class="scnd">
                        <asp:Label ID="Label2" runat="server" Text='<%# Eval("accpet") %>'></asp:Label>
                    </div>
                    <div class="thrd">
                        <asp:DropDownList ID="DropDownList3" AutoPostBack="true" runat="server" OnSelectedIndexChanged="DropDownList3_SelectedIndexChanged">
                            <asp:ListItem Text="Select" Value="-1"></asp:ListItem>
                            <asp:ListItem Text="50"></asp:ListItem>
                            <asp:ListItem Text="51"></asp:ListItem>
                            <asp:ListItem Text="52"></asp:ListItem>
                            <asp:ListItem Text="53"></asp:ListItem>
                            <asp:ListItem Text="100"></asp:ListItem>
                        </asp:DropDownList>
                    </div>
                    <div class="frth">
                        <asp:Panel ID="Panel1" runat="server">
                            <asp:DropDownList ID="DropDownList2" runat="server">
                                <asp:ListItem Text="Succesful"></asp:ListItem>
                            </asp:DropDownList>
                        </asp:Panel>
                    </div>
                    <div class="reset-this">
                    </div>
                    <br />
                </div>
            </ItemTemplate>
        </asp:Repeater>
    </div>

除了
阿克佩特
DDL
面板


代码隐藏

protected void Page_Load(object sender, EventArgs e)
    {
        GetDAtaset();
    }

    public void GetDAtaset()
    {
        DataSet ds = new DataSet();
        DataTable dt = new DataTable("warehouseTable");
        dt.Columns.Add(new DataColumn("Expected", typeof(string)));
        dt.Columns.Add(new DataColumn("accpet", typeof(string)));
        DataRow dr = dt.NewRow();
        dr["Expected"] = "100";
        dr["accpet"] = "50";
        dt.Rows.Add(dr);


        DataRow dr1 = dt.NewRow();
        dr1["Expected"] = "50";
        dr1["accpet"] = "25";

        dt.Rows.Add(dr1);
        ds.Tables.Add(dt);

        Repeater1.DataSource = ds;
        Repeater1.DataBind();

    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        ((Panel)(e.Item.FindControl("panel1"))).Visible = false;
    }

    protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
    {

        for (int i = 0; i < Repeater1.Items.Count; i++)
        {
            Panel pnl_active = Repeater1.Items[i].FindControl("panel1") as Panel;

            Label Expected = Repeater1.Items[i].FindControl("Label1") as Label;
            DropDownList DDLValue = Repeater1.Items[i].FindControl("DropDownList3") as DropDownList;

            if (DDLValue.SelectedItem.ToString() == Expected.ToString())
            {
                pnl_active.Visible = true;
            }
        }
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
GetDAtaset();
}
public void GetDAtaset()
{
数据集ds=新数据集();
DataTable dt=新数据表(“仓库表”);
添加(新的数据列(“预期”,类型为(字符串));
添加(新数据列(“accpet”,typeof(string));
DataRow dr=dt.NewRow();
dr[“预期”]=“100”;
dr[“accpet”]=“50”;
dt.Rows.Add(dr);
DataRow dr1=dt.NewRow();
dr1[“预期”]=“50”;
dr1[“accpet”]=“25”;
dt.行。添加(dr1);
ds.Tables.Add(dt);
Repeater1.DataSource=ds;
Repeater1.DataBind();
}
受保护的void Repeater1\u ItemDataBound(对象发送方,RepeaterItemEventArgs e)
{
((面板)(如Item.FindControl(“panel1”))。可见=假;
}
受保护的void DropDownList3\u SelectedIndexChanged(对象发送方,事件参数e)
{
对于(int i=0;i
您需要做两件事:

首先,在您的
页面加载
方法中添加此选项,以避免重置中继器的值:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GetDAtaset();
    }
}
接下来,将
DropDownList3\u SelectedIndexChanged
方法修改如下:

protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
{
    for (int i = 0; i < Repeater1.Items.Count; i++)
    {
        Panel pnl_active = Repeater1.Items[i].FindControl("panel1") as Panel;

        Label Expected = Repeater1.Items[i].FindControl("Label1") as Label;
        DropDownList DDLValue = Repeater1.Items[i].FindControl("DropDownList3") as DropDownList;

        //You need to compare the SelectedItem.Text with the label Expected.Text
        if (DDLValue.SelectedItem.Text == Expected.Text)
        {
            pnl_active.Visible = true;
        }
    }
}
protectedvoid DropDownList3\u SelectedIndexChanged(对象发送方,事件参数e)
{
对于(int i=0;i
请注意,您将DDLValue.SelectedItem与预期的标签进行比较,这是不正确的,因为您需要将DDLValue.SelectedItem.Text与标签预期的.Text进行比较


希望这有帮助。

但是如果我正在解除监听,那么我发现选择更改事件没有被触发。即使在加载页面中添加(!IsPostBack)后,它仍然没有触发吗?