1

グリッドビューにラジオボタンがあり、このグリッドビュー自体が1つのユーザーコントロール内にあり、ユーザーコントロールが詳細ビューコントロール内にある場合に、ラジオボタンCheckedChangedプロパティをどのように使用する必要があるかを知りたいです。

別のコントロールでラジオボタンコントロールを見つける方法を学ぶ前に。しかし、見つけた後、そのためのCheckedChangedプロパティを作成する方法がわかりませんか?

protected void btnShowAddTransmittaltoCon_Click(object sender, EventArgs e)
{
    Transmittallistfortest transmittalList = (Transmittallistfortest)DetailsView1.FindControl("Transmittallistfortest1");
    GridView g3 = transmittalList.FindControl("GridViewTtransmittals") as GridView;
    foreach (GridViewRow di in g3.Rows)

    {

        RadioButton rad = (RadioButton)di.FindControl("RadioButton1");
        //Giving Error:Object reference not set to an instance of an object.
        if (rad != null && rad.Checked)
        {
            var w = di.RowIndex;

            Label1.Text = di.Cells[1].Text;
        }
4

1 に答える 1

0

これを交換してください

RadioButton rad = (RadioButton)di.FindControl("RadioButton1");

これとともに:

RadioButton rad = di.FindControl("RadioButton1") as RadioButton;

例外は発生しませんが、返される可能性があります。その場合、次のステートメントNULLでキャッチされます。ifrad != null

asキーワードを使用することの全体的なポイントはこれです:

as=>は例外をスローしません-nullを報告するだけです。


ちなみに、次の方法で取得する必要がありますRadioButton

if(di.RowType == DataControlRowType.DataRow)
{
    RadioButton rad = di.FindControl("RadioButton1") as RadioButton;
}

CheckedChangeイベントを定義するには、次のようにします。

//rad.Checked = true;

rad.CheckedChanged += new EventHandler(MyCheckedChangeEventHandler);

次に、ハンドラーを定義します。

protected void MyCheckedChangeEventHandler)(object sender, EventArgs e)
{
    RadioButton rb = (RadioButton)sender;

    if (rb.Checked)
    {
        // Your logic here...
    }
}
于 2012-10-24T15:20:04.300 に答える