Nu vill jag antingen direkt när man klickar i RadioButton eller när man klickar på knappen btnPayWay skapa en session innehållande PayId för den RadioButton som är markerad.
Det tråkiga med CatZ förslag är att RadioButton inte implementerar IButtonControl, som t.ex. Button gör. Det finns helt enkelt ingen property som heter CommandName på RadioButton.
Mitt förslag är tyvärr lite småsunkigt, men jag kommer inte på något bättre just nu:
protected void rbtnPayWay_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if(rb == null)
return;
// Om kontrollen du vill åt ligger i samma "cell" (samma templatefield)
DataControlFieldCell cell = rb.Parent as DataControlFieldCell;
if(cell == null)
return;
// Om kontrollen du vill åt ligger på samma rad, men i ett annat templatefield
// eller om du vill komma åt dataItem för raden. Det innebär dock att GridView
// måste vara databound (row.DataItem)
//GridViewRow row = rb.Parent.Parent as GridViewRow;
//if (row != null)
// return;
Label lblPayId = cell.FindControl("lblPayId") as Label;
if(lblPayId == null)
return;
int payId;
Int32.TryParse(lblPayId.Text, out payId);
Session["PayId"] = payId;
}
Det känns alltid som om man gör något fel när man börjar navigera uppåt med .Parent, men jag tror att detta kan funka ganska bra ändå.
protected void rbtnPayWay_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
if (rb == null)
return;
// Om kontrollen du vill åt ligger i samma "cell" (samma templatefield)
DataControlFieldCell cell = (DataControlFieldCell)rb.Parent;
if (cell == null)
return;
// Om kontrollen du vill åt ligger på samma rad, men i ett annat templatefield
// eller om du vill komma åt dataItem för raden. Det innebär dock att GridView
// måste vara databound (row.DataItem)
//GridViewRow row = rb.Parent.Parent as GridViewRow;
//if (row != null)
// return;
Label lblPayId = (Label)cell.FindControl("lblPayId");
if (lblPayId == null)
return;
int payId;
Int32.TryParse(lblPayId.Text, out payId);
Session["PayId"] = payId;
}