1

最初に、私は答えを見つけようとしたと言わざるを得ません...そして、はい、私はASP.Netの世界では初めてです:)

GridView の EditItemTemplate フィールドで DropDownList を使用したいと思います。パラメータSelectedValueを設定できないことがわかりました。ありません。コードビハインドで設定しようとすると、ddlEditPermissionsが存在しないようです。

<asp:TemplateField HeaderText="opravneni" SortExpression="opravneni">
<edititemtemplate>
    <asp:DropDownList ID="ddlEditPermissions" runat="server" DataSource='<%# getPermissions() %>' OnPreRender="ddlEditPermissions_PreRender"/>
</edititemtemplate>
<insertitemtemplate>
    <asp:TextBox ID="tbEditPermissions" runat="server" Text='<%# Bind("opravneni") %>'></asp:TextBox>
</insertitemtemplate>
<itemtemplate>
    <asp:Label ID="lEditPermissions" runat="server" Text='<%# Bind("opravneni") %>'></asp:Label>
</itemtemplate>

私は本当に混乱しています。誰でも私にアドバイスできますか?

4

1 に答える 1

1

構築されてデータバインドされた後、毎回トリガーされる をRowDataBound使用できます。GridViewGridViewRow

protected void gridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Edit)
    {
        var ddlEditPermissions = (DropDownList)e.Row.FindControl("ddlEditPermissions");
        // bind DropDown manually
        ddlEditPermissions.DataSource = getPermissions();
        ddlEditPermissions.DataTextField = "Permission_Name"; // presumed text-column
        ddlEditPermissions.DataValueField = "Permission_ID";  // presumed id-column
        ddlEditPermissions.DataBind();

        DataRowView dr = e.Row.DataItem as DataRowView;  // you might need to change this type, use the debugger then to determine it
        ddlEditPermissions.SelectedValue = dr["Permission_ID"].ToString(); // presumed foreign-key-column 
    }
}
于 2013-08-30T08:34:22.553 に答える