2013-05-29 35 views
0

我想在我的GridView中使用一個按鈕來傳遞ID從我選擇的行到我的數據庫,我將它與數據庫中的GUID進行比較,然後將它傳遞給我的「顯示」功能從數據庫中獲取帖子。如何使用從gridwiew_rowcommand返回的值來搜索數據庫?

現在我不知道如何從我的按鈕中獲取對象「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> 
+0

'GridView1_RowCommand'是'void' - 因此它實際上並不返回任何東西。你想把它歸還給「哪裏」? – Darren

回答

1

的返回類型GridView1_RowCommand是無效的,因此該方法將不能對任何數據返回到Show方法。有其中可以更喜歡以執行

  1. 呼叫從GridView1_RowCommand方法Show方法(最佳的選擇,因爲.NET框架執行事件,要求網格)

例如2個選擇

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 
} 
+0

感謝User35443編輯內容以使其可讀。新的StackOverFlow。 –

相關問題