C # передача информации - PullRequest
       3

C # передача информации

0 голосов
/ 05 января 2012

Извините заранее, я собираюсь попытаться объяснить это как можно лучше ...

У меня есть 2 страницы asp.net, одна с именем membermaster, а вторая с именем memberdetails.Я создал библиотеку классов, которая содержит 2 функции

Моя первая функция возвращает список в зависимости от результата поиска ...

Я добавил кнопку ссылки в первый столбец gridviews, который при нажатии проходит черезСтрока запроса.То, что я хотел сделать, это для моей второй функции, которую я создал это

public DataTable GetMembers(int MEMBERSHIPGEN)
{
  DataTable table = null;
  SqlConnection con = null;
  SqlCommand cmd = null;
  SqlDataAdapter ad = null;
  SqlParameter prm = null;
  try
  {
      table = new DataTable();
    using (con = new SqlConnection(connectionString))
    {
        using (cmd = new SqlCommand("usp_getmemberdetail", con))
        {
            using (ad = new SqlDataAdapter(cmd))
            {
                prm = new SqlParameter("@MEMBERSHIPGEN", SqlDbType.Int);
                prm.Value = MEMBERSHIPGEN;
                cmd.Parameters.Add(prm);
                ad.Fill(table);
            }

        }
    }
  }
  catch (Exception ex)
  {
        //write your exception code here
  }
  return table;
}

В попытке попытаться отправить членство на это, и он вернет результаты.Но как только я скомпилирую DLL и добавлю ее в свой проект, я не уверен, как я буду ссылаться на эту функцию, чтобы заполнить отдельные текстовые поля и метки информацией.

Что я пытаюсь сделать, это когда пользователь щелкаетКнопка viewdetails на gridview. Затем я могу использовать тот член группы, который я передал через строку запроса, чтобы заполнить страницу с помощью хранимой процедуры, но смарт-коды будут храниться в DLL.

Ответы [ 3 ]

2 голосов
/ 05 января 2012

Возможно, вы хотите, чтобы ваш метод возвращал значение.В настоящее время тип возвращаемого значения void, поэтому значения, которые он заполняет внутри, просто исчезают, когда стек вызовов покидает метод.Звучит так, будто вы хотите что-то вроде этого:

public DataTable GetMembers(int MEMBERSHIPGEN)

Затем, в вашем методе, после того как вы заполнили DataTable и вышли из блоков using, вы должны сделать что-то вроде этого:

return table;

Это вернет DataTable к тому, что вызвало метод.Таким образом, ваша страница будет выглядеть примерно так:

DataTable table = GetMembers(membershipgen);

Таким образом, страница будет отвечать за:

  • Получить значение membershipgen из ввода (строка запроса)
  • Вызвать метод и получить результат метода
  • Показать результат метода (привязать к сетке? Или что вы делаете для отображения данных)

И метод отвечает за:

  • Взаимодействие с базой данных

Это хороший первый шаг к общей цели " разделение интересов", что очень хорошо.Вы можете продолжать идти по этому пути, всегда спрашивая себя, за что должен отвечать каждый метод, класс и т. Д. .Например, ваш метод GetMembers также должен отвечать за то, чтобы значение, переданное ему, было допустимым или чтобы возвращаемое значение не было null.

0 голосов
/ 05 января 2012

Вам нужно изменить GetMembers, чтобы они возвращали данные вместо void.Если вы хотите использовать DataTables, вы можете просто изменить свой код следующим образом:

public DataTable GetMembers(int MEMBERSHIPGEN)
{
    DataTable table = new DataTable();
    SqlConnection con = new SqlConnection(connectionString);

    using (SqlCommand cmd = new SqlCommand("usp_getmemberdetail", con))
    {
        using (SqlDataAdapter ad = new SqlDataAdapter(cmd))
        {
            SqlParameter prm = new SqlParameter("@MEMBERSHIPGEN", SqlDbType.Int);
            prm.Value = MEMBERSHIPGEN;
            cmd.Parameters.Add(prm);
            ad.Fill(table);
            return table;
        }

Тогда в вашей Page_Load это может быть что-то вроде этого (более надежного, чем мы надеемся):

0 голосов
/ 05 января 2012

Одним из способов может быть создание кнопки таким образом, чтобы она перемещалась по URL-адресу вдоль строк:

http://localhost/DetailPage.aspx?membershipgen=4

Затем при загрузке DetailPage.aspx:

Page_Load(Object sender, EventArgs e)
{
    if (!this.IsPostback)
    {
        int membershipgen;        

        if (int.TryParse(Request.QueryString["membershipgen"], out membershipgen)
        {
            //Get the data (replace DataAccess with the name of your data access class).
            //Also, you probably want to change GetMembers so it returns the data.
            DataTable table = DataAccess.GetMembers(membershipgen);

            //TODO: Display the results
        }
    }
    else
    {
        //Display an error
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...