Codeaddict7423
asked on
check table row prior to insert database record
Hello,
I have a maintenance page that allows users to insert buildings to a database table. In this same page, I have a textbox to allow users to add floors to a building.
However, I am attempting to write code that checks for the existence of buildings (perhaps by looking at a ddl control or a database table) so that users cannot add floors to a non-existence building. in other words, so that each floor has to have an associated building.
My aspx code follows:
-------------
<!-- Panel displaying buildings new starts here-->
<asp:Panel ID="pnl_maint_building_new " runat="server" BackColor="#dedede">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td colspan="2" valign="top" align="center">
<div class="requiredfield">* indicates required fields </div> </td>
</tr>
<tr>
<td valign="top" align="left"> <div class="requiredfield"> Building Code *</div></td>
<td valign="top" align="left"> <div class="requiredfield">Buil ding Name *</div> </td>
</tr>
<tr>
<td valign="top" align="left">
<asp:TextBox ID="txt_maint_buidling_cod e_add" runat="server"></asp:TextB ox>
<br />
<asp:RequiredFieldValidato r ID="RFV_building_code_add" runat="server" ErrorMessage="Must Enter Building Code" ControlToValidate="txt_mai nt_buidlin g_code_add "></asp:Re quiredFiel dValidator >
</td>
<td valign="top" align="left">
<asp:TextBox ID="txt_maint_building_nam e_add" runat="server"></asp:TextB ox><br />
<asp:RequiredFieldValidato r ID="RFV_building_name_add" runat="server" ErrorMessage="Must Enter Building Name" ControlToValidate="txt_mai nt_buildin g_name_add "></asp:Re quiredFiel dValidator >
</td>
</tr>
<tr>
<td valign="top" align="left">
<asp:Button ID="btn_maint_building_add "
runat="server" Text="Add Building" onclick="btn_maint_buildin g_add_Clic k" /></td>
<td valign="top" align="left">
<asp:Button ID="btn_maint_building_can cel" runat="server"
CausesValidation="False" onclick="btn_maint_buildin g_cancel_C lick"
Text="Cancel" />
</td>
</tr>
</table>
</asp:Panel>
<!-- Panel displaying buildings new ends here-->
---------------
My codebehind to add building follows:
---------------
protected void btn_maint_building_add_Cli ck(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection(Configuratio nManager.C onnectionS trings["De tentionDWL Connection String"].C onnectionS tring);
SqlCommand cmd = Conn.CreateCommand();
cmd.CommandType = CommandType.Text;
Conn.Open();
cmd.CommandText = @"INSERT INTO [CodeTable_Building] ([Building_Code], [Building_Name]) VALUES (@Building_Code, @Building_Name)";
cmd.Parameters.AddWithValu e("@Buildi ng_Code", txt_maint_buidling_code_ad d.Text);
cmd.Parameters.AddWithValu e("@Buildi ng_Name", txt_maint_building_name_ad d.Text);
cmd.ExecuteNonQuery();
Conn.Close(); //Close the connection with database
//fv_building.DataBind();
//ddl_maint_building.DataB ind();
txt_maint_buidling_code_ad d.Text = " ";
txt_maint_building_name_ad d.Text = " ";
// Response.Redirect("maintea nnce_page_ 02.aspx");
// Bind_gv_maint_building();
gv_maint_building_add.Data Bind();
gv_maint_building_add.Visi ble = false;
GridView1.DataBind();
GridView1.Visible = true;
pnl_maint_building_nested. Visible = true;
Response.Redirect("mainten ance_page0 4.aspx");
}
protected void lnkbtn_maint_floor_add_Cli ck(object sender, EventArgs e)
{
pnl_maint_floor_new.Visibl e=true;
}
-----------------------
The aspx code for adding floors follows
-----------------------
<!-- Panel displaying floors new starts here-->
<asp:Panel ID="pnl_maint_floor_new" runat="server" BackColor="#deedde">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td colspan="2" valign="top" align="left"> </td>
</tr>
<tr>
<td valign="top" align="left"> Building Code</td>
<td valign="top" align="left"> Floor Name </td>
</tr>
<tr>
<td valign="top" align="left">
<asp:DropDownList ID="ddl_maint_bldg" runat="server" AutoPostBack="True"
onselectedindexchanged="dd l_maint_bl dg_Selecte dIndexChan ged"
DataSourceID="ds_maint_bui lding_to_a dd_floor" DataTextField="Building_Co de"
DataValueField="Building_I D">
<asp:ListItem Text="--Select Building--"></asp:ListItem >
</asp:DropDownList>
<asp:SqlDataSource ID="ds_maint_building_to_a dd_floor" runat="server"
ConnectionString="<%$ ConnectionStrings:Detentio nDWLConnec tionString %>"
SelectCommand="SELECT [Building_ID], [Building_Code] FROM [CodeTable_Building] ORDER BY [Building_Code]">
</asp:SqlDataSource>
<br />
<asp:Label ID="lbl_maint_buildingID_t o_add_newf loor" runat="server" Text=" " BackColor="blue"></asp:Lab el> & nbsp;
<asp:Label ID="lbl_maint_buildingCode _to_add_ne wfloor" runat="server" Text=" " BackColor="Yellow"></asp:L abel></td> <td valign="top" align="left">
<asp:TextBox ID="txt_maint_floor_add" runat="server"
ontextchanged="txt_maint_f loor_add_T extChanged "></asp:Te xtBox><br />
<asp:RequiredFieldValidato r ID="RequiredFieldValidator 2" runat="server" ErrorMessage="Enter Floor Name" ControlToValidate="txt_mai nt_floor_a dd"></asp: RequiredFi eldValidat or></td></ tr><tr>
<td valign="top" align="left">
<asp:Button ID="btn_maint_floor_add" runat="server" Text="Add Floor" onclick="btn_maint_floor_a dd_Click" /></td>
<td valign="top" align="left">
<asp:Button ID="btn_maint_floor_cancel " runat="server"
CausesValidation="False" onclick="btn_maint_floor_c ancel_Clic k"
Text="Cancel" />
</td>
</tr>
</table>
</asp:Panel>
<!-- Panel displaying floors new starts here-->
<!-- Panel displaying floors starts here-->
<asp:Panel ID="pnl_maint_floor_add" runat="server" BackColor="#dedede">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="top" align="left"> </td>
</tr>
<tr>
<td valign="top" align="left"> gridview below is for displaying floors
<asp:GridView ID="gv_maint_floor" runat="server" AutoGenerateColumns="False "
CellPadding="4" DataKeyNames="Floor_ID" DataSourceID="ds_maint_flo ors"
Font-Names="Arial" Font-Size="Small" ForeColor="#333333" GridLines="None"
Height="54px" onselectedindexchanged="gv _maint_flo or_Selecte dIndexChan ged"
Width="460px" AllowSorting="True">
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<Columns>
<asp:CommandField ShowEditButton="True" ShowSelectButton="True" />
<asp:BoundField DataField="Floor_ID" HeaderText="Floor_ID"
SortExpression="Floor_ID" InsertVisible="False" ReadOnly="True" />
<asp:BoundField DataField="Building_ID" HeaderText="Building_ID"
SortExpression="Building_I D" />
<asp:BoundField DataField="Building_Code" HeaderText="Building_Code"
SortExpression="Building_C ode" />
<asp:BoundField DataField="Floor_Name" HeaderText="Floor_Name"
SortExpression="Floor_Name " />
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<br />
<asp:SqlDataSource ID="ds_maint_floors" runat="server"
ConflictDetection="Compare AllValues"
ConnectionString="<%$ ConnectionStrings:Detentio nDWLConnec tionString %>"
DeleteCommand="DELETE FROM [CodeTable_Floor] WHERE [Floor_ID] = @original_Floor_ID AND (([Building_ID] = @original_Building_ID) OR ([Building_ID] IS NULL AND @original_Building_ID IS NULL)) AND (([Floor_Name] = @original_Floor_Name) OR ([Floor_Name] IS NULL AND @original_Floor_Name IS NULL))"
InsertCommand="INSERT INTO [CodeTable_Floor] ([Building_ID], [Floor_Name]) VALUES (@Building_ID, @Floor_Name)"
OldValuesParameterFormatSt ring="orig inal_{0}"
SelectCommand="SELECT CodeTable_Floor.Floor_ID, CodeTable_Floor.Building_I D, CodeTable_Building.Buildin g_Code, CodeTable_Floor.Floor_Name FROM CodeTable_Floor INNER JOIN CodeTable_Building ON CodeTable_Floor.Building_I D = CodeTable_Building.Buildin g_ID"
UpdateCommand="UPDATE [CodeTable_Floor] SET [Building_ID] = @Building_ID, [Floor_Name] = @Floor_Name WHERE [Floor_ID] = @original_Floor_ID AND (([Building_ID] = @original_Building_ID) OR ([Building_ID] IS NULL AND @original_Building_ID IS NULL)) AND (([Floor_Name] = @original_Floor_Name) OR ([Floor_Name] IS NULL AND @original_Floor_Name IS NULL))">
<DeleteParameters>
<asp:Parameter Name="original_Floor_ID" Type="Int32" />
<asp:Parameter Name="original_Building_ID " Type="Int32" />
<asp:Parameter Name="original_Floor_Name" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Building_ID" Type="Int32" />
<asp:Parameter Name="Floor_Name" Type="String" />
<asp:Parameter Name="original_Floor_ID" Type="Int32" />
<asp:Parameter Name="original_Building_ID " Type="Int32" />
<asp:Parameter Name="original_Floor_Name" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Building_ID" Type="Int32" />
<asp:Parameter Name="Floor_Name" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
</td>
</tr>
<tr>
<td valign="top" align="left"> </td>
</tr>
</table>
</asp:Panel>
<!-- Panel displaying floors ends here-->
--------------------
The codebehind to insert floors follows:
-------------------------- -
protected void btn_maint_floor_add_Click( object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection(Configuratio nManager.C onnectionS trings["De tentionDWL Connection String"].C onnectionS tring);
SqlCommand cmd = Conn.CreateCommand();
cmd.CommandType = CommandType.Text;
Conn.Open();
cmd.CommandText = @"INSERT INTO [CodeTable_Floor] ([Building_ID], [Building_Code], [Floor_Name]) VALUES (@Building_ID, @Building_Code, @Floor_Name)";
cmd.Parameters.AddWithValu e("@Buildi ng_ID", lbl_maint_buildingID_to_ad d_newfloor .Text);
cmd.Parameters.AddWithValu e("@Buildi ng_Code", lbl_maint_buildingCode_to_ add_newflo or.Text);
cmd.Parameters.AddWithValu e("@Floor_ Name", txt_maint_floor_add.Text);
cmd.ExecuteNonQuery();
Conn.Close(); //Close the connection with database
//fv_building.DataBind();
//ddl_maint_building.DataB ind();
txt_maint_buidling_code_ad d.Text = " ";
txt_maint_building_name_ad d.Text = " ";
// Response.Redirect("maintea nnce_page_ 02.aspx");
// Bind_gv_maint_building();
gv_maint_building_add.Data Bind();
gv_maint_building_add.Visi ble = false;
GridView1.DataBind();
GridView1.Visible = true;
pnl_maint_building_nested. Visible = true;
Response.Redirect("mainten ance_page0 4.aspx");
}
---------------------
ANY help with this logic would be very much appreciated.
I have a maintenance page that allows users to insert buildings to a database table. In this same page, I have a textbox to allow users to add floors to a building.
However, I am attempting to write code that checks for the existence of buildings (perhaps by looking at a ddl control or a database table) so that users cannot add floors to a non-existence building. in other words, so that each floor has to have an associated building.
My aspx code follows:
-------------
<!-- Panel displaying buildings new starts here-->
<asp:Panel ID="pnl_maint_building_new
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td colspan="2" valign="top" align="center">
<div class="requiredfield">* indicates required fields </div> </td>
</tr>
<tr>
<td valign="top" align="left"> <div class="requiredfield"> Building Code *</div></td>
<td valign="top" align="left"> <div class="requiredfield">Buil
</tr>
<tr>
<td valign="top" align="left">
<asp:TextBox ID="txt_maint_buidling_cod
<br />
<asp:RequiredFieldValidato
</td>
<td valign="top" align="left">
<asp:TextBox ID="txt_maint_building_nam
<asp:RequiredFieldValidato
</td>
</tr>
<tr>
<td valign="top" align="left">
<asp:Button ID="btn_maint_building_add
runat="server" Text="Add Building" onclick="btn_maint_buildin
<td valign="top" align="left">
<asp:Button ID="btn_maint_building_can
CausesValidation="False" onclick="btn_maint_buildin
Text="Cancel" />
</td>
</tr>
</table>
</asp:Panel>
<!-- Panel displaying buildings new ends here-->
---------------
My codebehind to add building follows:
---------------
protected void btn_maint_building_add_Cli
{
SqlConnection Conn = new SqlConnection(Configuratio
SqlCommand cmd = Conn.CreateCommand();
cmd.CommandType = CommandType.Text;
Conn.Open();
cmd.CommandText = @"INSERT INTO [CodeTable_Building] ([Building_Code], [Building_Name]) VALUES (@Building_Code, @Building_Name)";
cmd.Parameters.AddWithValu
cmd.Parameters.AddWithValu
cmd.ExecuteNonQuery();
Conn.Close(); //Close the connection with database
//fv_building.DataBind();
//ddl_maint_building.DataB
txt_maint_buidling_code_ad
txt_maint_building_name_ad
// Response.Redirect("maintea
// Bind_gv_maint_building();
gv_maint_building_add.Data
gv_maint_building_add.Visi
GridView1.DataBind();
GridView1.Visible = true;
pnl_maint_building_nested.
Response.Redirect("mainten
}
protected void lnkbtn_maint_floor_add_Cli
{
pnl_maint_floor_new.Visibl
}
-----------------------
The aspx code for adding floors follows
-----------------------
<!-- Panel displaying floors new starts here-->
<asp:Panel ID="pnl_maint_floor_new" runat="server" BackColor="#deedde">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td colspan="2" valign="top" align="left"> </td>
</tr>
<tr>
<td valign="top" align="left"> Building Code</td>
<td valign="top" align="left"> Floor Name </td>
</tr>
<tr>
<td valign="top" align="left">
<asp:DropDownList ID="ddl_maint_bldg" runat="server" AutoPostBack="True"
onselectedindexchanged="dd
DataSourceID="ds_maint_bui
DataValueField="Building_I
<asp:ListItem Text="--Select Building--"></asp:ListItem
</asp:DropDownList>
<asp:SqlDataSource ID="ds_maint_building_to_a
ConnectionString="<%$ ConnectionStrings:Detentio
SelectCommand="SELECT [Building_ID], [Building_Code] FROM [CodeTable_Building] ORDER BY [Building_Code]">
</asp:SqlDataSource>
<br />
<asp:Label ID="lbl_maint_buildingID_t
<asp:Label ID="lbl_maint_buildingCode
<asp:TextBox ID="txt_maint_floor_add" runat="server"
ontextchanged="txt_maint_f
<asp:RequiredFieldValidato
<td valign="top" align="left">
<asp:Button ID="btn_maint_floor_add" runat="server" Text="Add Floor" onclick="btn_maint_floor_a
<td valign="top" align="left">
<asp:Button ID="btn_maint_floor_cancel
CausesValidation="False" onclick="btn_maint_floor_c
Text="Cancel" />
</td>
</tr>
</table>
</asp:Panel>
<!-- Panel displaying floors new starts here-->
<!-- Panel displaying floors starts here-->
<asp:Panel ID="pnl_maint_floor_add" runat="server" BackColor="#dedede">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="top" align="left"> </td>
</tr>
<tr>
<td valign="top" align="left"> gridview below is for displaying floors
<asp:GridView ID="gv_maint_floor" runat="server" AutoGenerateColumns="False
CellPadding="4" DataKeyNames="Floor_ID" DataSourceID="ds_maint_flo
Font-Names="Arial" Font-Size="Small" ForeColor="#333333" GridLines="None"
Height="54px" onselectedindexchanged="gv
Width="460px" AllowSorting="True">
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<Columns>
<asp:CommandField ShowEditButton="True" ShowSelectButton="True" />
<asp:BoundField DataField="Floor_ID" HeaderText="Floor_ID"
SortExpression="Floor_ID" InsertVisible="False" ReadOnly="True" />
<asp:BoundField DataField="Building_ID" HeaderText="Building_ID"
SortExpression="Building_I
<asp:BoundField DataField="Building_Code" HeaderText="Building_Code"
SortExpression="Building_C
<asp:BoundField DataField="Floor_Name" HeaderText="Floor_Name"
SortExpression="Floor_Name
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<br />
<asp:SqlDataSource ID="ds_maint_floors" runat="server"
ConflictDetection="Compare
ConnectionString="<%$ ConnectionStrings:Detentio
DeleteCommand="DELETE FROM [CodeTable_Floor] WHERE [Floor_ID] = @original_Floor_ID AND (([Building_ID] = @original_Building_ID) OR ([Building_ID] IS NULL AND @original_Building_ID IS NULL)) AND (([Floor_Name] = @original_Floor_Name) OR ([Floor_Name] IS NULL AND @original_Floor_Name IS NULL))"
InsertCommand="INSERT INTO [CodeTable_Floor] ([Building_ID], [Floor_Name]) VALUES (@Building_ID, @Floor_Name)"
OldValuesParameterFormatSt
SelectCommand="SELECT CodeTable_Floor.Floor_ID, CodeTable_Floor.Building_I
UpdateCommand="UPDATE [CodeTable_Floor] SET [Building_ID] = @Building_ID, [Floor_Name] = @Floor_Name WHERE [Floor_ID] = @original_Floor_ID AND (([Building_ID] = @original_Building_ID) OR ([Building_ID] IS NULL AND @original_Building_ID IS NULL)) AND (([Floor_Name] = @original_Floor_Name) OR ([Floor_Name] IS NULL AND @original_Floor_Name IS NULL))">
<DeleteParameters>
<asp:Parameter Name="original_Floor_ID" Type="Int32" />
<asp:Parameter Name="original_Building_ID
<asp:Parameter Name="original_Floor_Name"
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Building_ID" Type="Int32" />
<asp:Parameter Name="Floor_Name" Type="String" />
<asp:Parameter Name="original_Floor_ID" Type="Int32" />
<asp:Parameter Name="original_Building_ID
<asp:Parameter Name="original_Floor_Name"
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Building_ID" Type="Int32" />
<asp:Parameter Name="Floor_Name" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
</td>
</tr>
<tr>
<td valign="top" align="left"> </td>
</tr>
</table>
</asp:Panel>
<!-- Panel displaying floors ends here-->
--------------------
The codebehind to insert floors follows:
--------------------------
protected void btn_maint_floor_add_Click(
{
SqlConnection Conn = new SqlConnection(Configuratio
SqlCommand cmd = Conn.CreateCommand();
cmd.CommandType = CommandType.Text;
Conn.Open();
cmd.CommandText = @"INSERT INTO [CodeTable_Floor] ([Building_ID], [Building_Code], [Floor_Name]) VALUES (@Building_ID, @Building_Code, @Floor_Name)";
cmd.Parameters.AddWithValu
cmd.Parameters.AddWithValu
cmd.Parameters.AddWithValu
cmd.ExecuteNonQuery();
Conn.Close(); //Close the connection with database
//fv_building.DataBind();
//ddl_maint_building.DataB
txt_maint_buidling_code_ad
txt_maint_building_name_ad
// Response.Redirect("maintea
// Bind_gv_maint_building();
gv_maint_building_add.Data
gv_maint_building_add.Visi
GridView1.DataBind();
GridView1.Visible = true;
pnl_maint_building_nested.
Response.Redirect("mainten
}
---------------------
ANY help with this logic would be very much appreciated.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.