簡體   English   中英

將 KeyFieldName 從 gridview 綁定到列設置內的 Url.Action

[英]Binding KeyFieldName from gridview to Url.Action inside column settings

我試圖在列設置中將對象鍵域值獲取到 RouteValueDictionary,但是由於某種原因,我只能訪問綁定到此調用中的列的字段!

代碼:

    @Html.DevExpress().GridView(settings =>
        {
            //General settings
            settings.Name = "name";
            settings.KeyFieldName = "ID";
            //Other settings etc.....

            settings.Columns.Add(column =>
            {
                column.Name = "Name";
                column.FieldName = "CurrentFieldBoundToColumn";
                column.Caption = "Some caption";

                //Set hyperlink
                column.ColumnType = MVCxGridViewColumnType.HyperLink;
                var hyperLinkProperties = column.PropertiesEdit as HyperLinkProperties;
                String urlFormatString = Url.Action("Action", "Controller", new RouteValueDictionary(new { ID= "{0}" }));
                hyperLinkProperties.NavigateUrlFormatString = HttpUtility.UrlDecode(urlFormatString);


            });
    //Other Columns etc etc
 });

{ ID= "{0}" })) 這是我需要 Keyfield 值的地方,但是無論我嘗試什么,我都只會得到綁定到列 column.FieldName = "CurrentFieldBoundToColumn" 的值。 有什么想法嗎?

編輯;

得到它像這樣工作:

settings.Columns.Add(column =>
{
    column.Name = "Name";
    column.FieldName = "CurrentFieldBoundToColumn"";
    column.Caption = "SomeCaption";

    //Set hyperlink
    column.SetDataItemTemplateContent(content =>
    ViewContext.Writer.Write
    (
        Html.ActionLink
        (
            linkText: content.Text, 
            actionName: "Action", 
            controllerName: "Controller",
            routeValues: new { ID = content.KeyValue }, 
            htmlAttributes: null
        )
    ));
});

您可以將SetDataItemTemplateContent方法與簡單的ActionLinkGridViewBaseRowTemplateContainer.KeyValue屬性一起使用:

@Html.DevExpress().GridView(settings =>
{
    //General settings
    settings.Name = "name";
    settings.KeyFieldName = "ID";
    //Other settings etc.....

    settings.Columns.Add(column =>
    {
        column.Name = "Name";
        column.FieldName = "CurrentFieldBoundToColumn";
        column.Caption = "Some caption";

        column.SetDataItemTemplateContent(content =>
            ViewContext.Writer.Write(
                Html.ActionLink(content.Text, "Action", "Controller",
                new { ID = content.KeyValue }, null)));
    });
    //Other Columns etc etc
});
    settings.Columns.Add(c =>
    {
        c.FieldName = "Dept_Name"; c.Caption = "Dept Name";
        c.SetDataItemTemplateContent(i =>
        {
            ViewContext.Writer.Write(Html.ActionLink(DataBinder.Eval(i.DataItem, "Dept_Name").ToString(), "Edit", new { Dept_Id = DataBinder.Eval(i.DataItem, "Dept_Id").ToString().Trim() }).ToHtmlString());
        });
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM