动态postbackurl

时间:2014-01-21 04:32:23

标签: c# asp.net .net

我在asp中调用模态时遇到问题

我需要根据下拉列表中选择的内容从后面的代码设置linkbutton4的postbackurl!我已经尝试将postbackurl directlty放在它工作的linkbuttons标签上但当我从后面的代码更改它时并不是BTW我在点击链接按钮时更改它。

linkbutton的代码隐藏:

 protected void LinkButton4_Click(object sender, EventArgs e)
          { 
              var a = (Control)sender;
              GridViewRow row = (GridViewRow)a.NamingContainer;
              string b = row.Cells[0].Text;
              Session["C"] = b;
              DropDownList ddl  =(DropDownList)row.Cells[7].FindControl("DropDownList1");
              Session["D"] = ddl.SelectedItem.Text;
              LinkButton lb = (LinkButton)row.Cells[7].FindControl("LinkButton4");
              if (Session["D"].ToString() == "Upload")
              {
                  lb.PostBackUrl = "preprod_design.aspx#edit";
              //    Upload();
              }
              if (Session["D"].ToString() == "Download")
              {
                  Download();
              }
             infogridbind();
          }

以下是aspx的代码:

<asp:GridView ID="GridView2" runat="server" ondatabound="GridView2_DataBound" 
                     onrowdatabound="GridView2_RowDataBound" 
                     onrowcreated="GridView2_RowCreated" 
                     onselectedindexchanged="GridView2_SelectedIndexChanged" 
                     onrowcommand="GridView2_RowCommand" AutoGenerateColumns="False">
                  <Columns>
                   <asp:BoundField DataField="SizeSetID" SortExpression="SizeSetID"/>
                   <asp:BoundField DataField="Revision No." SortExpression="RevisionNo" HeaderText = "Revision No."/>
                   <asp:TemplateField HeaderText ="Image">
                  <ItemTemplate>
                  <asp:Image ID="Image2" runat="server" onError = "this.style.display = 'none';" ImageUrl='<%#"~/ClientPoImage.ashx?autoId="+Eval("[SizeSetID]")%>' Width="50px" Height="40px"/>
                  </ItemTemplate>
                  </asp:TemplateField>
                   <asp:BoundField DataField="Size Name" SortExpression="SizeName" HeaderText = "Size Name"/>
                   <asp:BoundField DataField="Quantity Requested" SortExpression="QuantityRequested" HeaderText ="Quantity Requested"/>
                   <asp:BoundField DataField="Quantity Received" SortExpression="QuantityReceived" HeaderText="Quantity Received"/>
                   <asp:BoundField DataField="Balance" SortExpression="Balance" HeaderText="Balance"/>
                      <asp:TemplateField HeaderText="Action">      
                  <ItemTemplate >
                      <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
                          <asp:ListItem>Upload</asp:ListItem>
                          <asp:ListItem>Download</asp:ListItem>
                          <asp:ListItem>Edit</asp:ListItem>
                          <asp:ListItem>Delete</asp:ListItem>
                          <asp:ListItem>Request</asp:ListItem>
                          <asp:ListItem>Receive</asp:ListItem>
                      </asp:DropDownList>
                        <asp:LinkButton ID="LinkButton4" runat="server" onclick="LinkButton4_Click">GO</asp:LinkButton>
                  </ItemTemplate>
                  </asp:TemplateField>
                  </Columns>
                 </asp:GridView>

2 个答案:

答案 0 :(得分:1)

从DropDownList和页面AutoPostBack="True"的标题中删除<%@ Page Title="data"... EnableEventValidation="false" %> 之后你只需点击链接按钮事件然后

   GridViewRow gr = (GridViewRow)(((LinkButton)sender).NamingContainer);     

   DropDownList ddl = (DropDownList)gr.FindControl("DropDownList1");
   If(ddl.SelectedValue =="Upload")  // or u can use ddl.SelectedItem.Text
   {
      //Upload();
   }
   else if(ddl.SelectedValue == "Download")
   {
     //Download();
   }

答案 1 :(得分:1)

您可以更改PostBackUrlLinkButtonDropDownList.SelectedIndexChanged内的protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { var ddl = (DropDownList)sender; var row = (GridViewRow)(ddl.NamingContainer); var lb = (LinkButton)row.FindControl("LinkButton4"); if (ddl.SelectedValue == "Upload") { lb.PostBackUrl = "preprod_design.aspx#edit"; } if (ddl.SelectedValue == "Download") { .... } }

....
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"
 onselectedindexchanged="DropDownList1_SelectedIndexChanged" >
....

您还需要像这样更改标记

{{1}}