次のコードとRaisePostBackEvent関数を使用して、GridViewのクリック可能な行を作成しました。GridViewのDropDownListを含む行をクリック可能にして、DropDownListを破棄します。
protected void gvResults_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onclick", ClientScript.GetPostBackEventReference(this, e.Row.RowIndex.ToString()));
}
}
GridViewには、いずれかのセルのDropDownListコントロールもあります。問題は、DropDownListをクリックして選択を変更すると、その行のonclickがトリガーされることです。これにより、DropDownListのオプションリストが表示されますが、行のonclickも処理されているため使用できなくなります。
DropDownListのonmouseoverにフラグを設定し、RaisePostBackEvent関数でそのフラグをチェックしようとしましたが、これは部分的にしか成功しませんでした。これにより、RaisePostBackEventの機能が無効になりましたが、行onclickが発生しても、DropDownListはまだ使用できない状態になっています。
したがって、行の他の部分がクリックされたときにonclickが機能するようにしながら、DropDownList関数を作成するにはどうすればよいですか?
注:現在、.NET 2.0での作業は制限されています。
この投稿を参照してください:http://stackoverflow.com/questions/6491627/prevent-table-row-onclick-event-to-fire-when-clicking-button-inside-therow – jmaglio