Как использовать возвращенное значение из gridwiew_rowcommand для поиска в базе данных?

Я пытаюсь использовать кнопку в моем сеточном представлении, чтобы передать идентификатор, который является GUID из выбранной строки, в мою базу данных, где я сравниваю ее с направляющими в базе данных, затем я передаю ее в свою функцию "Показать" и получаю пост из базы данных.

Прямо сейчас я понятия не имею, как получить объект "висадабок" от моей кнопки до моего "Показать".

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 ответ

Решение

Тип возврата для GridView1_RowCommand является недействительным, поэтому метод не сможет вернуть какие-либо данные Show метод. Есть 2 варианта, которые вы можете выполнить

  1. Позвоните Show метод из GridView1_RowCommand Метод (лучший вариант, так как.net Framework выполняет событие, вызывающее сетку)

например

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". Этот делегат будет вызывать метод "Показать".

лайк:

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
}
Другие вопросы по тегам