'#'
заберет пользователя к верхней части страницы, таким образом, я обычно иду с void(0)
.
javascript:;
также ведет себя как javascript:void(0);
, чтобы заставить это работать, я добавляю, чтобы создать два метода (один для GridView, а другой для ObjectDataSource), а также изменить параметр Select с ControlParameter на обычный параметр.
идея состоит в том, чтобы устанавливать Параметр каждый раз при создании строки ...
protected void gvSearch_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList d = (DropDownList)e.Row.FindControl("ddlFields");
string type = ((HiddenField)e.Row.FindControl("hfFieldType")).Value;
_type = type;
d.DataBind();
}
}
protected void odsOperator_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["Type"] = _type;
}
private string _type = "";
, а ObjectDataSource будет
<asp:ObjectDataSource ID="odsOperator" runat="server" TypeName="OperatorFieldsDAO"
SelectMethod="FindByType" onselecting="odsOperator_Selecting">
<SelectParameters>
<asp:Parameter Type="String" Name="Type" />
</SelectParameters>
</asp:ObjectDataSource>
Я надеюсь, что это поможет кому-нибудь ...
Поскольку у вас есть:
<asp:HiddenField ID="hfFieldType" runat="server" .../>
В пределах TemplateField
вашего представления может не быть ни одного, одного или нескольких экземпляров этого поля на странице. Поэтому hfFieldType
не будет уникальным идентификатором, на самом деле фактический идентификатор будет определен во время выполнения.
Таким образом, ваш параметр управления не может найти его, поскольку он ищет его значение в свойстве элемента управления с именем hfFieldType
где-то на странице.
Я не работал с ObjectDataSource несколько лет, но подозреваю, что вы можете подключиться к событию Выбор .