C# 调试时,Gridview未显示在浏览器上
大家好, 我有一个web应用程序,它是一个基本的输入表单。输入表单有一个动态gridview,允许用户输入任意数量的行来输入行程信息 除了两个方面外,大多数事情都很顺利C# 调试时,Gridview未显示在浏览器上,c#,asp.net,gridview,C#,Asp.net,Gridview,大家好, 我有一个web应用程序,它是一个基本的输入表单。输入表单有一个动态gridview,允许用户输入任意数量的行来输入行程信息 除了两个方面外,大多数事情都很顺利 我继续出现错误,说gridviewName不在当前上下文中 最后,更重要的问题在于,我的gridview不会出现在浏览器中的“调试”中(无论选择何种浏览器) 我已经研究了一周了,我想我需要一个新的视角来研究这个问题。在我的codebehind和aspx页面中,我可能会缺少什么,以显示我的gridview,并在codebehind
<%@ Page Language="C#" AutoEventWireup="True" MasterPageFile="~/Site.Master" CodeBehind="intakeTripDetails.aspx.cs" Inherits="WebApplication2.TravelerInformation" %>
<asp:Content ID="intakeTripDets" ContentPlaceHolderID="MainContent" runat="server">
<fieldset>
<legend>Trip Details</legend>
<div class="input">
<p>Please enter trip details on the below form. You can add additional rows as needed for each leg of our trip.</p>
<br />
<asp:Label runat="server" ID="lblMessage" Text="" ></asp:Label><br />
<label>Flight Number(s)</label><asp:TextBox runat="server"></asp:TextBox>
<br /><br /><br /><br />
<asp:GridView ID="tripDetails" runat="server" ShowFooter="True" ShowHeaderWhenEmpty="True">
<Columns>
<asp:BoundField DataField="RowNumber" HeaderText="" />
<asp:TemplateField HeaderText="Arrival Date & Time" >
<ItemTemplate>
<asp:TextBox ID="arrivalDateTime" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Departure Date & Time">
<ItemTemplate>
<asp:TextBox ID="departDateTime" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Country">
<ItemTemplate>
<asp:DropDownList ID="countryList" runat="server" AutoPostBack="true" AppendDataBoundItems="true">
<asp:ListItem Value="-1">--SELECT--</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="City">
<ItemTemplate>
<asp:TextBox ID="city" runat="server">
</asp:TextBox>
</ItemTemplate>
<FooterStyle HorizontalAlign="Right" />
<FooterTemplate>
<asp:Button ID="btnAdd" runat="server" Text="Add New Row" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkRemove" runat="server">Remove</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<div class="btnfmt"><%--<asp:Button ID="prev" runat="server" Text="Previous: Traveler Information" />--%>
<asp:Button ID="submit" runat="server" text="Submit Trip"/> </div>
</div>
</fieldset> </asp:Content>
行程详情
请在下表中输入行程详情。您可以根据需要为我们的每段行程添加额外的行
航班号
--挑选--
去除
代码隐藏:
using System;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace travelDetails
{
public partial class DynamicGrid : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
SetInitialRow();
}
}
private ArrayList countryData()
{
ArrayList arr = new ArrayList();
arr.Add(new ListItem("Afghanistan", "1"));
arr.Add(new ListItem("Aland Islands", "2"));
arr.Add(new ListItem("Albania", "3"));
arr.Add(new ListItem("Algeria", "4"));
arr.Add(new ListItem("American Samoa", "5"));
arr.Add(new ListItem("Andorra", "6"));
arr.Add(new ListItem("Angola", "7"));
arr.Add(new ListItem("Anguilla", "8"));
arr.Add(new ListItem("Antarctica", "9"));
arr.Add(new ListItem("Antigua and Barbuda", "10"));
arr.Add(new ListItem("Argentina", "11"));
arr.Add(new ListItem("Armenia", "12"));
arr.Add(new ListItem("Aruba", "13"));
arr.Add(new ListItem("Australia", "14"));
arr.Add(new ListItem("Austria", "15"));
arr.Add(new ListItem("Azerbaijan", "16"));
arr.Add(new ListItem("Bahamas", "17"));
arr.Add(new ListItem("Bahrain", "18"));
arr.Add(new ListItem("Bangladesh", "19"));
arr.Add(new ListItem("Barbados", "20"));
return arr;
}
private void FillDropDownList(DropDownList ddl)
{
ArrayList arr = countryData();
foreach (ListItem item in arr)
{
ddl.Items.Add(item);
}
}
private void SetInitialRow()
{
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
dt.Columns.Add(new DataColumn("arrivalDateTime", typeof(DateTime)));
dt.Columns.Add(new DataColumn("departDateTime", typeof(DateTime)));
dt.Columns.Add(new DataColumn("city", typeof(string)));
dt.Columns.Add(new DataColumn("countryList", typeof(string)));
dr = dt.NewRow();
dr["RowNumber"] = 1;
dr["arrivalDateTime"] = string.Empty;
dr["departDateTime"] = string.Empty;
dr["city"] = string.Empty;
dt.Rows.Add(dr);
//What if I want to see the data for future reference
ViewState["CurrentTable"] = dt;
//Data is stuck here
tripDetails.DataSource = dt;
tripDetails.DataBind();
DropDownList ddl1 = (DropDownList)tripDetails.Rows[0].Cells[4].FindControl("countryList");
FillDropDownList(ddl1);
}
private void AddNewRowToGrid()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow["RowNumber"] = dtCurrentTable.Rows.Count + 1;
for (int i = 0; i < dtCurrentTable.Rows.Count - 1; i++)
{
//extract the textbox values
TextBox box1 = (TextBox)tripDetails.Rows[i].Cells[1].FindControl("arrivalDateTime");
TextBox box2 = (TextBox)tripDetails.Rows[i].Cells[2].FindControl("departDateTime");
TextBox box3 = (TextBox)tripDetails.Rows[i].Cells[3].FindControl("city");
dtCurrentTable.Rows[i]["arrivalDateTime"] = box1.Text;
dtCurrentTable.Rows[i]["departDateTime"] = box2.Text;
dtCurrentTable.Rows[i]["city"] = box3.Text;
//extract the ddl values
DropDownList ddl1 = (DropDownList)tripDetails.Rows[i].Cells[4].FindControl("countryList");
//Update the DataRow with the ddl items selected
dtCurrentTable.Rows[i]["countryList"] = ddl1.SelectedItem.Text;
}
//Adds new row to the data table
dtCurrentTable.Rows.Add(drCurrentRow);
//Again...we probably want to refer to this again
ViewState["CurrentTable"] = dtCurrentTable;
//Rebind the grid with the current data
tripDetails.DataSource = dtCurrentTable;
tripDetails.DataBind();
}
else
{
Response.Write("View State is Null");
}
//Set previous data on postbacks
SetPreviousData();
}
}
private void SetPreviousData()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TextBox box1 = (TextBox)tripDetails.Rows[i].Cells[2].FindControl("arrivalDateTime");
TextBox box2 = (TextBox)tripDetails.Rows[i].Cells[3].FindControl("departDateTime");
TextBox box3 = (TextBox)tripDetails.Rows[i].Cells[4].FindControl("city");
DropDownList ddl1 = (DropDownList)tripDetails.Rows[rowIndex].Cells[4].FindControl("countryList");
//Fill the ddl with data
FillDropDownList(ddl1);
if (i < dt.Rows.Count - 1)
{
//Assign the value from the datatable to the textbox
box1.Text = dt.Rows[i]["arrivalDateTime"].ToString();
box2.Text = dt.Rows[i]["departDateTime"].ToString();
box3.Text = dt.Rows[i]["city"].ToString();
//Set the previously selected items to each ddl
ddl1.ClearSelection();
ddl1.Items.FindByText(dt.Rows[i]["countryList"].ToString()).Selected = true;
}
rowIndex++;
}
}
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
AddNewRowToGrid();
}
protected void tripDetails_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
LinkButton lb = (LinkButton)e.Row.FindControl("lnkRemove");
if (lb != null)
{
if (dt.Rows.Count > 1)
{
if (e.Row.RowIndex == dt.Rows.Count - 1)
{
lb.Visible = true;
}
}
else
{
lb.Visible = true;
}
}
}
}
protected void lnkRemove_Click(object sender, EventArgs e)
{
LinkButton lb = (LinkButton)sender;
GridViewRow gvRow = (GridViewRow)lb.NamingContainer;
int rowID = gvRow.RowIndex;
if (ViewState["CurrentTable"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 1)
{
if (gvRow.RowIndex < dt.Rows.Count - 1)
{
//Remove selected row data and reset row number
dt.Rows.Remove(dt.Rows[rowID]);
ResetRowID(dt);
}
}
//And another future reference
ViewState["CurrentTable"] = dt;
//Bind the data to the gridview again with updated data
tripDetails.DataSource = dt;
tripDetails.DataBind();
}
//Set previous data on postback
SetPreviousData();
}
private void ResetRowID(DataTable dt)
{
int rowNumber = 1;
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
row[0] = rowNumber;
rowNumber++;
}
}
}
使用系统;
使用系统配置;
使用系统集合;
使用System.Collections.Generic;
使用System.Collections.Specialized;
使用系统文本;
使用系统数据;
使用System.Data.Sql;
使用System.Data.SqlClient;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用System.Web.UI.HTMLControl;
名称空间详细信息
{
公共部分类DynamicGrid:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Page.IsPostBack)
{
SetInitialRow();
}
}
私有ArrayList countryData()
{
ArrayList arr=新的ArrayList();
arr.Add(新列表项(“阿富汗”、“1”));
arr.Add(新列表项(“阿兰群岛”、“2”));
arr.Add(新列表项(“阿尔巴尼亚”,“3”));
arr.Add(新列表项(“阿尔及利亚”,“4”));
arr.Add(新清单项目(“美属萨摩亚”、“5”);
arr.Add(新列表项(“安道尔”,“6”));
arr.Add(新列表项(“安哥拉”、“7”));
arr.Add(新的清单项目(“安圭拉”、“8”);
arr.Add(新列表项(“南极洲”、“9”));
arr.Add(新列表项(“安提瓜和巴布达”、“10”);
arr.Add(新列表项(“阿根廷”、“11”));
arr.Add(新列表项(“亚美尼亚”、“12”));
arr.Add(新列表项(“阿鲁巴”、“13”));
arr.Add(新列表项(“澳大利亚”、“14”));
arr.Add(新列表项(“奥地利”、“15”));
arr.Add(新列表项(“阿塞拜疆”,“16”));
arr.Add(新列表项(“巴哈马”、“17”);
arr.Add(新列表项(“巴林”、“18”));
arr.Add(新列表项(“孟加拉国”、“19”));
arr.Add(新的清单项目(“巴巴多斯”,“20”));
返回arr;
}
私有void FillDropDownList(DropDownList ddl)
{
ArrayList arr=countryData();
foreach(arr中的列表项)
{
ddl.Items.Add(项目);
}
}
私有void SetInitialRow()
{
DataTable dt=新的DataTable();
数据行dr=null;
添加(新的数据列(“行数”,typeof(字符串));
添加(新数据列(“arrivalDateTime”,typeof(DateTime));
添加(新的数据列(“departDateTime”,typeof(DateTime));
添加(新的数据列(“城市”,typeof(字符串));
添加(新的数据列(“countryList”,typeof(string));
dr=dt.NewRow();
dr[“行数”]=1;
dr[“arrivalDateTime”]=string.Empty;
dr[“departDateTime”]=string.Empty;
dr[“city”]=string.Empty;
dt.Rows.Add(dr);
//如果我想查看数据以备将来参考,该怎么办
视图状态[“当前表”]=dt;
//数据卡在这里
tripDetails.DataSource=dt;
tripDetails.DataBind();
DropDownList ddl1=(DropDownList)tripDetails.Rows[0]。Cells[4]。FindControl(“countryList”);
FillDropDownList(ddl1);
}
私有void AddNewRowToGrid()
{
int rowIndex=0;
如果(ViewState[“CurrentTable”]!=null)
{
DataTable dtCurrentTable=(DataTable)视图状态[“CurrentTable”];
DataRow drCurrentRow=null;
如果(dtCurrentTable.Rows.Count>0)
{
drCurrentRow=dtCurrentTable.NewRow();
drCurrentRow[“RowNumber”]=dtCurrentTable.Rows.Count+1;
为了(