2013-07-25 4 views
0

Быстрый вопрос. Я пытаюсь создать список объектов и назначить его gridview. Но, похоже, нет данных?Как связать gridview со списком объектов?

Кроме того, я хотел бы сохранить пользовательский ввод каждый раз, когда пользователь нажимает кнопку добавления (просто нужна идея). Каким будет мой лучший подход для этого?

List<OrderItems> orderItem = new List<OrderItems>(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    orderItem.Add(new OrderItems("Test1", "Test2")); 
    orderItem.Add(new OrderItems("Test1", "Test2")); 
    orderItem.Add(new OrderItems("Test1", "Test2")); 
    orderItem.Add(new OrderItems("Test1", "Test2")); 
    orderItem.Add(new OrderItems("Test1", "Test2")); 
} 
protected void btnAddItem_Click(object sender, EventArgs e) 
{ 

    // Producing an error of no data 
    grdTest.DataSource = orderItem; 
    grdTest.DataBind(); 

} 

Вот мой класс:

public class OrderItems 
{ 
    private string prodId; 
    private string qty; 

    public OrderItems() 
    { 

    } 

    public OrderItems(string prodId, string quantity) 
    { 
     this.prodId = prodId; 
     this.qty = quantity; 
    } 

    public string productId 
    { 
     get 
     { 
      return productId; 
     } 
    } 

    public string quantity 
    { 
     get 
     { 
      return quantity; 
     } 
    } 
} 

Благодаря

ответ

0

Ваш неправильный номер OrderItems. Включено верно в комментариях

public string productId 
{ 
    get 
    { 
     return productId; //Change it to return prodId; 
    } 
} 

public string quantity 
{ 
    get 
    { 
     return quantity; //Change it to return qty; 
    } 
} 

В настоящее время это происходит в бесконечном цикле.

В противном случае я не вижу никаких проблем.

+0

Yikes! Это сработало: D Большое спасибо :)! – Zain1291

0

Ожидаете ли вы ваш фрагмент кода будет работать и нуждаются в помощи локализации проблемы, или вы спрашиваете, как код привязки данных и агрегирование данных в коде xaml/C#?

Ваш код не является полным и не будет работать. Вам нужно выполнить операцию добавления в список нажатием кнопки, которую вы можете вытащить из текстовых полей. Если вам нужны данные списка для отображения на вашем xaml/дисплее, вам нужно добавить уведомитель, чтобы активировать пользовательский интерфейс для обновления при изменении данных.

Вы можете узнать, как правильно выполнять привязку данных с двух сторон от Data-Binding sample code.

+0

Нет, в настоящее время забыть о сберегающих входах. приведенный выше код предназначен только для целей тестирования, а значения жестко закодированы. Я просто хотел знать, могу ли я связать список объектов, как я сделал выше, с gridview? Почему он говорит, что мой список не содержит никаких данных? – Zain1291

+0

Я заметил, что вы не вызывали Page_Load(), которые добавляют ваши жестко закодированные данные. Вы пропустили это или не включили код, такой как this.Loaded + = Page_Load; в конструкторе страницы? –

0

Это не лучший образец для использования. Я бы создал статический класс репозитория. Зачем создавать элементы в загрузке страницы, так как вы не привязываетесь к странице_load. Просто создайте элементы в кнопке, но я бы использовал класс репозитория, так как вы все равно создаете сущность. Зачем писать больше кода, чем вам нужно, ваш класс ошибочен, просто используйте сокращенный метод. Вот хороший шаблон для изучения.

Я бы использовал целое число для количества бит.

public class OrderItem 
{ 

    public string ProductId { get; set; }  
    public int Quantity { get; set; } 

} 


public static class OrderItemRepository() 
{ 
    public static List<OrderItem> GetOrderItems() 
    { 
     List<OrderItem> rv = new List<OrderItem>(); 
     rv.Add(new OrderItem{ ProductId="1", Quantity=2}); 

     return rv; 

    } 

} 


protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     //bind grid here if need be. 
    } 
} 

private BindGrid() 
{ 

    grdTest.DataSource = OrderItemRepository.GetOrderItems(); 
    grdTest.DataBind(); 

} 


protected void btnAddItem_Click(object sender, EventArgs e) 
{ 
    BindGrid(); 

} 
+0

Привет, спасибо за предложение. Вышеприведенный код был просто проверкой сохранения значений. Фактически, в настоящее время я создал класс для хранения всех моих значений в списке. Поэтому я беру вход пользователя, передавая значения на button_click функции класса, которая создает объект в списке. Что касается удаления и обновления. Благодаря :) – Zain1291

Смежные вопросы