2014-01-18 6 views
1

У меня есть кнопка Link Внутри Repeater контроля, и я хочу перейти на другую страницуКак передать несколько значений с помощью кнопки Link внутри репитера на другую страницу?

<ItemTemplate> 
    <tr> 
     <td bgcolor="#D8E1EA" style="display: none"> 
      <asp:Label ID="empId" runat="server" Text='<% # Eval("emp_id")%>' /> 
     </td> 
     <td> 
      <asp:LinkButton ID="lnkRowSelection" runat="server" Text='<% # Eval("FullEmpName")%>' CausesValidation="false" 
       CssClass="navigationlink" CommandName='<% # Eval("FullEmpName")%>' CommandArgument='<%#Eval("emp_id") %>' 
       OnClick="ButtonLink_Click" ForeColor="black" Font-Underline="false" /> 
     </td> 
     <td> 
      <asp:Label ID="Label1" runat="server" Text='<% # Eval("days_worked")%>' /> 
     </td> 
     <td> 
      <asp:Label ID="Label2" runat="server" Text='<% # Eval("total_absents")%>' /> 
     </td> 
     <td> 
      <asp:Label ID="Label5" runat="server" Text='<% # Eval("days_marked")%>' /> 
     </td> 
    </tr> 
</ItemTemplate> 

теперь я хочу передать несколько значений на другую страницу (ManualAttendance.aspx) с помощью кнопки Link Я попытался это, но с этим я могу только передать одно значение lnkRowSelection .Text Пожалуйста, скажите мне, как я могу передать несколько значений столбца? это то, что я попытался

protected void ButtonLink_Click(object sender, System.EventArgs e) 
{ 
    //LinkButton _lnkBtn = rptTeamAverage.Items[i].FindControl("lnkRowSelection") as LinkButton; 
    LinkButton lnkRowSelection = (LinkButton)sender; 
    //Label empId = (Label)sender; 

    lnkRowSelection.PostBackUrl = "ManualAttendance.aspx?id=" + lnkRowSelection.Text + "&M=" + Request.QueryString["M"] + "&S=" + int.Parse(Request.QueryString["S"].ToString()) + "&sys=" + ((System.Collections.Generic.Dictionary<string, string>)Session["User"])["Token"]; 
} 
+0

' "& M =" + Request.QueryString ["M"] '? что это ? что такое ценность 'M'? Опишите значения четко! Вы хотите передать 'days_worked',' total_absents' и 'days_marked'? Не так ли? – zey

+0

yupppp. точно, чтобы передать эти поля days_worked, total_absents и days_marked, любезно скажите мне, как я могу это сделать? –

+0

M и S - это как M Master-страница, это практика навигации, которую мы используем в нашем приложении. –

ответ

3

Вы можете использовать точку с запятой в качестве разделителя в CommandArgument свойства lnkRowSelection. Допустим, вы хотите передать значения emp_id, days_worked, total_absents и days_marked, вот что вам нужно добавить в код ASPX:

<asp:LinkButton ID="LinkButton1" 
    runat="server" 
    Text='<% # Eval("FullEmpName") %>' 
    CausesValidation="false" 
    CssClass="navigationlink" 
    CommandName='<% # Eval("FullEmpName") %>' 
    CommandArgument='<%#Eval("emp_id") + ";" + Eval("days_worked") + ";" + Eval("total_absents") + ";" + Eval("days_marked") %>' 
    OnClick="ButtonLink_Click" 
    ForeColor="black" 
    Font-Underline="false" /> 

затем в ButtonLink_Click:

protected void ButtonLink_Click(object sender, System.EventArgs e) 
{ 
    LinkButton lnkRowSelection = (LinkButton)sender; 
    string[] arguments = lnkRowSelection.CommandArgument.Split(';'); 
    string emp_id = arguments[0]; 
    string days_worked = arguments[1]; 
    string total_absents = arguments[2]; 
    string days_marked = arguments[3]; 

    // pass emp_id, days_worked, total_absents, and days_marked to another page via query string 
    Response.Redirect(string.Format("ManualAttendance.aspx?id={0}&daysworked={1}&totalabsents={2}&daysmarked={3}", emp_id, days_worked, total_absents, days_marked), false); 
}