如何使用gridwiew_rowcommand中返回的值来搜索数据库?

时间:2013-05-29 14:54:18

标签: c# asp.net gridview rowcommand

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

现在我不知道如何从我的按钮到“Show”获取对象“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>

1 个答案:

答案 0 :(得分:1)

GridView1_RowCommand的返回类型为void,因此该方法无法将任何数据返回到Show方法。您可以选择执行两个选项

  1. Show方法调用GridView1_RowCommand方法(最佳选项为.net框架执行网格事件调用)
  2. e.g。

    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”方法。
    2. 像:

      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
      }