asp.net,我用datalist来实现显示剩余房间书,但是页面就是不显示,,不知道问题在哪里?麻烦各位帮我看一下。
前台代码:
<asp:datalist id="dlt_roomlist" runat="server" CellSpacing="5"
ShowFooter="False" ShowHeader="False" RepeatDirection="Horizontal"
RepeatColumns="6" BorderColor="#999999" BorderStyle="None" BackColor="White"
CellPadding="3" GridLines="Vertical" BorderWidth="1px" DESIGNTIMEDRAGDROP="5"
DataSourceID="SqlDataSource1"
onselectedindexchanged="dlt_roomlist_SelectedIndexChanged">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<SelectedItemTemplate>
<font face="宋体"></FONT>
</SelectedItemTemplate>
<AlternatingItemStyle BackColor="LightGray"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
<ItemTemplate>
<FONT id="dll" face="宋体"></FONT>
<TABLE cellSpacing="0" cellPadding="0" width="100%" border="0">
<TR>
<TD width="12%">
<DIV><FONT color="#000000"><B><font size="5"><%# DataBinder.Eval(Container, "DataItem.RID") %></FONT></B></FONT></DIV>
</TD>
</TR>
<TR>
<TD width="12%">
<DIV><B>类别:</B><%# DataBinder.Eval(Container, "DataItem.TName") %></DIV>
</TD>
</TR>
<TR>
<TD width="12%">
<DIV><B>空房:</B><%# DataBinder.Eval(Container, "DataItem.RState") %></DIV>
</TD>
</TR>
<TR>
<TD width="88%"><%# DataBinder.Eval(Container, "DataItem.RID","<a href=>预定</a>") %></TD>
</TR>
</TABLE>
</ItemTemplate>
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"></HeaderStyle>
<EditItemTemplate>
<FONT face="宋体"></FONT>
</EditItemTemplate>
</asp:datalist>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{ BindList();
}
public void BindList()
{
string s = ConfigurationManager.ConnectionStrings["siteconn"].ConnectionString;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=HP-PC;Initial Catalog=酒店管理系统;Integrated Security=True;User Instance=False"; //创建SqlDataAdapter对象,调用视图
SqlDataAdapter da1 = new SqlDataAdapter("guestroomleft", conn);
//创建并填充DataSet
DataSet ds1 = new DataSet();
da1.Fill(ds1);
dlt_roomlist.DataBind();
conn.Close();
}
protected void dlt_roomlist_SelectedIndexChanged(object sender, EventArgs e)
{ }
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{ }
前台代码:
<asp:datalist id="dlt_roomlist" runat="server" CellSpacing="5"
ShowFooter="False" ShowHeader="False" RepeatDirection="Horizontal"
RepeatColumns="6" BorderColor="#999999" BorderStyle="None" BackColor="White"
CellPadding="3" GridLines="Vertical" BorderWidth="1px" DESIGNTIMEDRAGDROP="5"
DataSourceID="SqlDataSource1"
onselectedindexchanged="dlt_roomlist_SelectedIndexChanged">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<SelectedItemTemplate>
<font face="宋体"></FONT>
</SelectedItemTemplate>
<AlternatingItemStyle BackColor="LightGray"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
<ItemTemplate>
<FONT id="dll" face="宋体"></FONT>
<TABLE cellSpacing="0" cellPadding="0" width="100%" border="0">
<TR>
<TD width="12%">
<DIV><FONT color="#000000"><B><font size="5"><%# DataBinder.Eval(Container, "DataItem.RID") %></FONT></B></FONT></DIV>
</TD>
</TR>
<TR>
<TD width="12%">
<DIV><B>类别:</B><%# DataBinder.Eval(Container, "DataItem.TName") %></DIV>
</TD>
</TR>
<TR>
<TD width="12%">
<DIV><B>空房:</B><%# DataBinder.Eval(Container, "DataItem.RState") %></DIV>
</TD>
</TR>
<TR>
<TD width="88%"><%# DataBinder.Eval(Container, "DataItem.RID","<a href=>预定</a>") %></TD>
</TR>
</TABLE>
</ItemTemplate>
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"></HeaderStyle>
<EditItemTemplate>
<FONT face="宋体"></FONT>
</EditItemTemplate>
</asp:datalist>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{ BindList();
}
public void BindList()
{
string s = ConfigurationManager.ConnectionStrings["siteconn"].ConnectionString;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=HP-PC;Initial Catalog=酒店管理系统;Integrated Security=True;User Instance=False"; //创建SqlDataAdapter对象,调用视图
SqlDataAdapter da1 = new SqlDataAdapter("guestroomleft", conn);
//创建并填充DataSet
DataSet ds1 = new DataSet();
da1.Fill(ds1);
dlt_roomlist.DataBind();
conn.Close();
}
protected void dlt_roomlist_SelectedIndexChanged(object sender, EventArgs e)
{ }
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{ }
你把鼠标放到SQLDATAADAPTER上,代码提示上显示这个对象的两个参数一个是sql语句,一个是CONNECTION实例化的对象,连SQL语句都没有,你想得到你所谓的“剩余房间”的数据,咋可能么。
我的第一个参数guestroomleft是用一个存储过程啊,存储过程的代码如下“
ALTER PROCEDURE [dbo].[guestroomleft]
AS SELECT [dbo].[GuestRoom].[RID],
[dbo].[GuestRoom].[TID],
[dbo].[GuestRoom].[RNumber],
[dbo].[GuestRoom].[RDescribe],
[dbo].[GuestRoom].[RPosition],
[dbo].[RoomType].[TID],
[dbo].[RoomType].[TName],
[dbo].[GuestRoom].[RState]
FROM[dbo].[GuestRoom],
[dbo].[RoomType]
WHERE [dbo].[GuestRoom].[TID]= [dbo].[RoomType].[TID]
AND [dbo].[GuestRoom].[RState]='OK'
这样做不对?还要在.cs中邪SQL语句?
sqlcommand sqlcom=new sqlcomand("guestroomleft", conn);
然后,
sqlcom.CommandType=CommandType.StoredProcedure;//这句才能让编译器知道你调用的是存储过程;
其实调用存储过程和执行SQL语句一样,只不过一个是直接执行,一个是在数据内间接执行。其他步骤请参考访问数据库的步骤,基本一致。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ BindList();
}
public void BindList()
{
string s = ConfigurationManager.ConnectionStrings["siteconn"].ConnectionString;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=HP-PC;Initial Catalog=酒店管理系统;Integrated Security=True;User Instance=False"; SqlCommand sqlcom = new SqlCommand("guestroomleft", conn);
sqlcom.CommandType = CommandType.StoredProcedure;//
//创建SqlDataAdapter对象,调用视图
SqlDataAdapter da1 = new SqlDataAdapter("guestroomleft", conn);
//创建并填充DataSet
DataSet ds1 = new DataSet();
da1.Fill(ds1);
dlt_roomlist.DataBind();
conn.Close();
}
protected void dlt_roomlist_SelectedIndexChanged(object sender, EventArgs e)
{ }
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{ }
}
就可以了。初学asp.net遇到了很多问题。感谢感谢