2010-07-15 3 views
2

Я хочу создать форму, в которой пользователи могут ввести некоторые данные в несколько текстовых полей и нажать кнопку «Добавить», а данные появятся в сетке или что-то в этом роде. Они должны иметь возможность вводить несколько строк.asp.net форма ввода данных

Затем, когда они будут выполнены, они могут нажать кнопку «Сохранить», чтобы сохранить данные в базе данных.

Как получить данные из текстовых полей в «сетку»?

EDIT

Вот что я до сих пор

protected void Page_Load(object sender, EventArgs e) 

{ 

    DataTable myDataTable = new DataTable(); 

    DataColumn dc1 = new DataColumn("Employee"); 
    myDataTable.Columns.Add(dc1); 
    DataColumn dc2 = new DataColumn("Category"); 
    myDataTable.Columns.Add(dc2); 
    DataColumn dc3 = new DataColumn("Description"); 
    myDataTable.Columns.Add(dc3); 
    DataColumn dc4 = new DataColumn("P/S/N"); 
    myDataTable.Columns.Add(dc4); 
    DataColumn dc5 = new DataColumn("Hours"); 
    myDataTable.Columns.Add(dc5); 
    DataColumn dc6 = new DataColumn("WeekEnding"); 
    myDataTable.Columns.Add(dc6); 

} 
protected void btnAddToGrid_Click(object sender, EventArgs e) 

{ 
    DataRow row = myDataTable.NewRow();// i'm getting error here sayind myDataTable does not exist 

    row["Employee"] = LoginName1.ToString(); 
    row["Category"] = ddlCategory.SelectedValue; 
    row["Description"] = txtDescription.Text; 
    row["P/S/N"] = ddlPSN.SelectedValue; 
    row["Hours"] = ddlHours.SelectedValue; 
    row["WeekEnding"] = txtWeekEnding.Text; 

    myDataTable.Rows.Add(row); 
+0

Это домашнее задание? Даже если это не ... что ты пробовал? – Kiril

+0

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

ответ

2

Ok вашу первую проблему с вашим комментарием:

i'm getting error here sayind myDataTable does not exist 

потому, что вы определили свою таблицу в Page_Load, а затем он идет вне сферы действия в конце функции. Похоже, вы не понимаете основные понятия ASP.NET и то, что вы пытаетесь сделать.

Это быстрое и грязное непроверенное решение вашей проблемы, но я должен подчеркнуть, что вы должны попытаться понять, почему это решение работает, прежде чем пытаться расширить его или сделать больше в ASP.NET. Надеюсь, мои 10 минут моего времени помогут вам начать понимать C# и ASP.NET.

[Serializable] 
public class YourData 
{ 
    public string Employee { get; set; } 
    public string Category { get; set; } 
    public string Description { get; set; } 
    public string P_S_N { get; set; } 
    public string Hours { get; set; } 
    public string WeekEnding { get; set; } 
} 

// Used to add your list of data to the viewstate cache 
// (There are other ways to store data between posts but I am trying to keep it simple) 
public void SetYourCachedData(List<YourData> data) 
{ 
    ViewState["YourDataCache"] = data; 
} 

// Used to get your save data so far 
public List<YourData> GetYourCachedData() 
{ 
    return ViewState["YourDataCache"] == null ? 
     new List<YourData>() : (List<YourData>)(ViewState["YourDataCache"]); 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    // Do nothing 
} 

protected void btnAddToGrid_Click(object sender, EventArgs e) 
{ 
    // Get the data and store it in the ViewState to cache it between post backs 
    // Assuming one record added with each click. 
    List<YourData> data = GetYourCachedData(); 
    data.Add(new YourData() 
    { 
     Employee = LoginName1.ToString(), 
     Category = ddlCategory.SelectedValue, 
     Description = txtDescription.Text, 
     P_S_N = ddlPSN.SelectedValue, 
     Hours = ddlHours.SelectedValue, 
     WeekEnding = txtWeekEnding.Text 
    });    

    // You can bind to any type of collection easily. 
    // You don't need to use a DataTable with a GridView 
    yourGrid.DataSource = data; 
    yourGrid.DataBind(); 

    SetYourCachedData(data); 
} 

protected void btnSaveData_Click(object sender, EventArgs e) 
{ 
    // Pull data from the ViewState cache 
    List<YourData> data = GetYourCachedData(); 

    // Now iterate through data to save it to your database... 
    // look this up if you don't know how as this is a lot more work. 
} 
+0

спасибо за помощь –

+0

Я изучаю ваше решение и хочу его понять. раньше не работали со списками или ViewState, поэтому я буду изучать эти темы, чтобы узнать больше. –

1

похоже, что вам просто нужно установить источник данных выходного объекта и связать его.

т.е .:

myGrid.datasource = myDataTable 
myGrid.databind() 

И, как говорит Kelsey - сохранить ваш DataTable в области.

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

+0

спасибо за помощь –