[英]No backend database, only dynamically created table bound to GridView
我需要這樣的解決方案:沒有后端數據庫,沒有Xml,沒有Excel,僅當用戶在GridData中提供信息顯示時。 僅在.aspx.cs
表和列中動態創建...
例如: -
Name |-Text box-| Button
網格視圖
當用戶使用TextBox和Submit Button訪問上述名稱的頁面時。
當用戶在TextBox中輸入名稱並單擊Submit時,我想將該名稱添加到網格中,但是在這里,我不僅要顯示數據...而且還要在Gridview中顯示先前輸入的數據。
eg2:-
sairam submit--->click
pamidi submit-->click
我想顯示用戶輸入的多少個值,我想在gridview中顯示多少個值,像這樣
sairam
pamidi
some....
more...
values..
當用戶執行瀏覽器關閉時。
info.aspx
:
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Enter Name"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="btnSumbit" runat="server" Text="Submit"
onclick="btnSumbit_Click" />
<asp:GridView ID="aspGrid1" runat="server" AutoGenerateColumns="false" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%#Eval("Name") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
info.aspx.cs
:
public partial class Default6 : System.Web.UI.Page
{
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(TextBox1.Text);
ViewState["DataTable"] = dt;
}
protected void btnSumbit_Click(object sender, EventArgs e)
{
if (TextBox1.Text == " ")
{
return;
}
else if (TextBox1.Text != string.Empty)
{
aspGrid1.DataSource = (DataTable)ViewState["DataTable"];
aspGrid1.DataBind();
}
}
}
您必須以某種方式保留數據。
標准選項包括數據庫,存儲在會話狀態或頁面內隱藏字段中的變量。 .net控件不會將數據綁定到它自己的viewstate
。
一個非標准的選擇是處理客戶端的所有內容而無需回發。 如果您采用這種方式,則可以更好地為您服務,但最好不要使用標准的.net控件,而應使用純HTML。 這將需要相當多的編碼。
using System;
using System.Web.UI;
using System.Data;
public partial class Default6 : System.Web.UI.Page
{
DataTable _dt;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
_dt = new DataTable();
_dt = CreateDataTable();
Session["DataTable"] = _dt;
aspGrid1.DataSource = ((DataTable)Session["DataTable"]).DefaultView;
aspGrid1.DataBind();
}
}
protected void btnSumbit_Click(object sender, EventArgs e)
{
if (TextBox1.Text == " ")
{
return;
}
else if (TextBox1.Text != string.Empty)
{
AddDataTable(TextBox1.Text, (DataTable)Session["DataTable"]);
aspGrid1.DataSource = ((DataTable)Session["DataTable"]).DefaultView;
aspGrid1.DataBind();
}
}
private DataTable CreateDataTable()
{
DataTable datatable=new DataTable();
DataColumn datacolumn=new DataColumn();
datacolumn.ColumnName = "Name";
datacolumn.DataType = Type.GetType("System.String");
datatable.Columns.Add(datacolumn);
return datatable;
}
private void AddDataTable(string name,DataTable datatable)
{
DataRow dataRow;
dataRow = datatable.NewRow();
dataRow["Name"] = name;
datatable.Rows.Add(dataRow);
}
}
每次輸入Page_Load時都在創建數據表。
您需要檢查ViewState中是否還沒有數據表,如果有,請拉出數據表並添加新行,或者首次創建數據表。
最好的方法是第一次在Page_Load的if(!PostBack){...}
中初始化數據表並將其存儲在Session中(類似於ViewState,但是減少了往返於客戶端的PostBack數據)。
然后,如果是回發,只需從會話中獲取數據表並向其中添加新行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.