0

我正在尝试使用我的gridview中的一个按钮将作为GUID的ID从我选择的行传递到我的数据库,在那里我将它与数据库中的guid进行比较,然后将它传递给我的“显示”函数并获取从数据库发布。

现在我不知道如何从我的按钮获取对象“visadabok”到我的“显示”。

protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
            {

            }
            else
            {
                //TextBox68.Text = Request["ID"];

                if (!string.IsNullOrEmpty(TextBox68.Text))
                {
                    Show(GridView1_RowCommand());
                }
            }
        }
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Valj")
            {
                var valj = new Guid((string)e.CommandArgument);

                var visadagbok = (from x in DagbokFactoryBase.All
                                     where (x.ID == valj)
                                     select x).FirstOrDefault();
                return visadagbok;

            }

        }
<asp:TemplateField>
    <ItemTemplate>
    <asp:Button ID="AddButton" runat="server"
    CommandName="Valj"
    CommandArgument="<%# ((GridViewRow) Container).ID %>"
    Text="Gå till" />
    </ItemTemplate>
</asp:TemplateField>
4

1 回答 1

1

for 的返回类型为GridView1_RowCommandvoid,因此该方法将无法向该方法返回任何数据Show。您可以选择执行 2 个选项

  1. Show从方法调用GridView1_RowCommand方法(最佳选择,因为 .net 框架执行网格的事件调用)

例如

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
   if (e.CommandName == "Valj")
   {
        var valj = new Guid((string)e.CommandArgument);
        var visadagbok = (from x in DagbokFactoryBase.All
                                     where (x.ID == valj)
                                     select x).FirstOrDefault();
        Show(visadagbok);

   }
}
  1. 如果你想为失去耦合编写一个基于事件的编程,为此你需要创建一个属性,该属性在设置属性值时调用委托。从“GridView1_RowCommand”为属性赋值。该委托将调用“Show”方法。

喜欢:

public delegate void ShowHandler(string id);

public string Id
{
    set
    {
        ShowHandler _show = new ShowHandler(Show);
        if (_show != null)
        {
            _show(value);
        }
    }
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    //set of existing code
    Id = visadagbok
}

public void Show(string Id)
{
    //set of code
}
于 2013-05-29T15:38:25.753 回答