我正在尝试使用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>
答案 0 :(得分:1)
GridView1_RowCommand
的返回类型为void,因此该方法无法将任何数据返回到Show
方法。您可以选择执行两个选项
Show
方法调用GridView1_RowCommand
方法(最佳选项为.net框架执行网格事件调用)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);
}
}
像:
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
}