The title says it all, i have read several posts on similar (same) subject, and they say that I should call the DataBind method directly after the Insert (or Insertevent if I got that one right). This makes perfect sense, but I just don't know how to do
it.
The problem is that i can't find insertevent in my code (or in designview) anywhere. Tried to copy other post solutions code in my code but (of course) no help...
I'm using VWD2005EE with SQL Server 2005, the detailview uses dropdownlist (presumably this is where the problem is). If anyone would have the patience to explain how to insert this event that calls databind (or whatever the solution is) and where exactly,
it would be greatly appreciated. If it could be entered in design mode with clicking a mouse (errrr. not-so-smart-user-mode), even better.
Thank you in advance, and hope your answer helps someone else.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class DisplayWord : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
TextBox color=DetailsView1.FindControl ("color") as TextBox;
TextBox size = DetailsView1.FindControl("size") as TextBox;
Jessica Cao
Sincerely,
Microsoft Online Community Support
“Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. ”
first of all thanks for taking the time to reply, and a correction: I'm coding in VB, so if you could give me the same example but in VB, and could you mark the part of the code where exactly the solution is? And just one more thing, I have a different order
than in your example (mine is SqlDataSource1, DetailsView1 including SqlDataSource3 for DropdownList1 ,SqlDataSource3 and then Gridview1 (which does not refresh)), or doesn't it make any difference?
Tek sam sad skuzio da smo "svoji"! Znaci, zelis pomocu DetailsView1 ubaciti podatke u bazu i nakon toga osvjeziti GridView1? Ako je tako, u DeatilsView1 dodaj ovaj dio:
OnItemInserted="DetailsView1_ItemInserted" a na sam pocetak stranice (odmah iza <%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="nevermind" %>) ubaci ovaj kod:
<script runat="server">
Protected Sub DetailsView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs)
GridView1.DataBind()
End Sub
</script>
Marked as answer by dotnetmatch on May 22, 2007 01:45 PM
Then, add this code in the beginning of the page, in the row after the title of the page, again, in my case, I (copy/) pasted it in line 2:
<script runat="server">
Protected Sub DetailsView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs)
GridView1.DataBind()
End Sub
</script>
And, that's it! It works great [cool], thank you for posting so simple (dummies-friendly) answer!
You guys are priceless! I have banged my head around for days. While there does seem to be incredible value in VS 2005 PE, it does not quite seem ready for "prime time". This is just one of many "unexplained" incosistencies I have encountered. I hope
I can help you all someday as much as you've assisted me.
Steve@eM8s.com - Why don't computers do what I want them to do instead of....what I tell them to do!?!?!?
Click "Mark as Answer" on the post that helped you to help future readers.
dotnetmatch
Member
31 Points
24 Posts
Gridview refresh after detailsview insert, again...
May 17, 2007 12:48 PM|LINK
Hi!
The title says it all, i have read several posts on similar (same) subject, and they say that I should call the DataBind method directly after the Insert (or Insertevent if I got that one right). This makes perfect sense, but I just don't know how to do it.
The problem is that i can't find insertevent in my code (or in designview) anywhere. Tried to copy other post solutions code in my code but (of course) no help...
I'm using VWD2005EE with SQL Server 2005, the detailview uses dropdownlist (presumably this is where the problem is). If anyone would have the patience to explain how to insert this event that calls databind (or whatever the solution is) and where exactly, it would be greatly appreciated. If it could be entered in design mode with clicking a mouse (errrr. not-so-smart-user-mode), even better.
Thank you in advance, and hope your answer helps someone else.
Jessica Cao ...
All-Star
25328 Points
2567 Posts
Re: Gridview refresh after detailsview insert, again...
May 22, 2007 05:48 AM|LINK
Hello,
Please refer to the following code sample
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DisplayWord.aspx.cs" Inherits="DisplayWord" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2"
EmptyDataText="There are no data records to display.">
<Columns>
<asp:BoundField DataField="color" HeaderText="color" SortExpression="color" />
<asp:BoundField DataField="size" HeaderText="size" SortExpression="size" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:pubsConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:pubsConnectionString1.ProviderName %>" SelectCommand="SELECT [color], [size] FROM [myTable]">
</asp:SqlDataSource>
<br />
<asp:DetailsView ID="DetailsView1" runat="server" Height="395px" Width="125px" AutoGenerateRows="False" DataSourceID="SqlDataSource1" DefaultMode="Insert" OnItemCommand="DetailsView1_ItemCommand">
<Fields>
<asp:TemplateField HeaderText ="color">
<InsertItemTemplate>
<asp:TextBox ID="color" runat="server" Text ='<%#DataBinder.Eval(Container.DataItem,"color") %>'></asp:TextBox>
</InsertItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="size">
<InsertItemTemplate>
<asp:TextBox ID="size" runat="server" Text ='<%#DataBinder.Eval(Container.DataItem,"size") %>'></asp:TextBox>
</InsertItemTemplate>
</asp:TemplateField>
<asp:TemplateField><InsertItemTemplate><asp:Button ID="Insert" Text="insert" runat="server" CommandName="Insert" /></InsertItemTemplate></asp:TemplateField>
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:pubsConnectionString1 %>"
SelectCommand="SELECT * FROM [myTable]"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class DisplayWord : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
TextBox color=DetailsView1.FindControl ("color") as TextBox;
TextBox size = DetailsView1.FindControl("size") as TextBox;
if (e.CommandName == "Insert")
{
SqlDataSource1.InsertCommand = "insert into myTable values(@color,@size)";
SqlDataSource1.InsertParameters.Add("color", color.Text);
SqlDataSource1.InsertParameters.Add("size", size.Text );
SqlDataSource1.Insert();
GridView1.DataBind();
}
}
}
Hope it helps,
Jessica
Sincerely,
Microsoft Online Community Support
“Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. ”
dotnetmatch
Member
31 Points
24 Posts
Re: Gridview refresh after detailsview insert, again...
May 22, 2007 09:01 AM|LINK
Hi,
first of all thanks for taking the time to reply, and a correction: I'm coding in VB, so if you could give me the same example but in VB, and could you mark the part of the code where exactly the solution is? And just one more thing, I have a different order than in your example (mine is SqlDataSource1, DetailsView1 including SqlDataSource3 for DropdownList1 ,SqlDataSource3 and then Gridview1 (which does not refresh)), or doesn't it make any difference?
Thank you so much.
kipo
All-Star
16475 Points
2811 Posts
Re: Gridview refresh after detailsview insert, again...
May 22, 2007 09:25 AM|LINK
It would be much easier if you could post your code here.
dotnetmatch
Member
31 Points
24 Posts
Re: Gridview refresh after detailsview insert, again...
May 22, 2007 10:05 AM|LINK
There it is...
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="nevermind" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ManCS %>" DeleteCommand="DELETE FROM [Man_Parts] WHERE [ID] = @ID" InsertCommand="INSERT INTO [Man_Parts] ([Man_Parts_Classes_ID], [Name_And_Manufacturer], [Comment]) VALUES (@Man_Parts_Classes_ID, @Name_And_Manufacturer, @Comment)" SelectCommand="SELECT [ID], [Man_Parts_Classes_ID], [Name_And_Manufacturer], [Comment] FROM [Man_Parts]" UpdateCommand="UPDATE [Man_Parts] SET [Man_Parts_Classes_ID] = @Man_Parts_Classes_ID, [Name_And_Manufacturer] = @Name_And_Manufacturer, [Comment] = @Comment WHERE [ID] = @ID"> <DeleteParameters> <asp:Parameter Name="ID" Type="Object" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="Man_Parts_Classes_ID" Type="Object" /> <asp:Parameter Name="Name_And_Manufacturer" Type="String" /> <asp:Parameter Name="Comment" Type="String" /> <asp:Parameter Name="ID" Type="Object" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="ID" /> <asp:Parameter Name="Man_Parts_Classes_ID" /> <asp:Parameter Name="Name_And_Manufacturer" Type="String" /> <asp:Parameter Name="Comment" Type="String" /> </InsertParameters> </asp:SqlDataSource> <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" CellPadding="4" DataKeyNames="ID" DataSourceID="SqlDataSource1" DefaultMode="Insert" ForeColor="#333333" GridLines="None" Height="50px" Width="125px"> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" /> <EditRowStyle BackColor="#2461BF" /> <RowStyle BackColor="#EFF3FB" /> <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> <Fields> <asp:TemplateField HeaderText="Vrsta dijela" SortExpression="Man_Parts_Classes_ID"> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Man_Parts_Classes_ID") %>'></asp:TextBox> </EditItemTemplate> <InsertItemTemplate> <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ManCS %>" DeleteCommand="DELETE FROM [Man_Parts_Classes] WHERE [ID] = @ID" InsertCommand="INSERT INTO [Man_Parts_Classes] ([ID], [Name]) VALUES (@ID, @Name)" SelectCommand="SELECT [ID], [Name] FROM [Man_Parts_Classes] ORDER BY [Name]" UpdateCommand="UPDATE [Man_Parts_Classes] SET [Name] = @Name WHERE [ID] = @ID"> <DeleteParameters> <asp:Parameter Name="ID" Type="Object" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="Name" Type="String" /> <asp:Parameter Name="ID" Type="Object" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="ID" Type="Object" /> <asp:Parameter Name="Name" Type="String" /> </InsertParameters> </asp:SqlDataSource> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="ID" SelectedValue='<%# Bind("Man_Parts_Classes_ID") %>'> </asp:DropDownList> </InsertItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("Man_Parts_Classes_ID") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="asd" SortExpression="Name_And_Manufacturer"> <EditItemTemplate> <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Name_And_Manufacturer") %>'></asp:TextBox> </EditItemTemplate> <InsertItemTemplate> <asp:TextBox ID="TextBox2" runat="server" Rows="3" Text='<%# Bind("Name_And_Manufacturer") %>' TextMode="MultiLine"></asp:TextBox> </InsertItemTemplate> <ItemTemplate> <asp:Label ID="Label3" runat="server" Text='<%# Bind("Name_And_Manufacturer") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="comment" SortExpression="Comment"> <EditItemTemplate> <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Comment") %>'></asp:TextBox> </EditItemTemplate> <InsertItemTemplate> <asp:TextBox ID="TextBox1" runat="server" AccessKey="k" Rows="5" Text='<%# Bind("Comment") %>' TextMode="MultiLine" ToolTip="whatever"></asp:TextBox> </InsertItemTemplate> <ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Bind("Comment") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:CommandField ShowInsertButton="True" ButtonType="Button" DeleteText="delete" EditText="edit" CancelText="" InsertText="" > <FooterStyle HorizontalAlign="Center" VerticalAlign="Middle" /> <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" /> <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" /> </asp:CommandField> </Fields> <FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" /> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" /> </asp:DetailsView> <br /> <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:GBOX_ManCS %>" DeleteCommand="DELETE FROM [Man_Parts] WHERE [ID] = @ID" InsertCommand="INSERT INTO [Man_Parts] ([ID], [Man_Parts_Classes_ID], [Name_And_Manufacturer], [Comment]) VALUES (@ID, @Man_Parts_Classes_ID, @Name_And_Manufacturer, @Comment)" SelectCommand="SELECT Man_Parts.ID, Man_Parts.Man_Parts_Classes_ID, Man_Parts.Name_And_Manufacturer, Man_Parts.Comment, Man_Parts_Classes.Name FROM Man_Parts INNER JOIN Man_Parts_Classes ON Man_Parts.Man_Parts_Classes_ID = Man_Parts_Classes.ID ORDER BY Man_Parts_Classes.Name, Man_Parts.Name_And_Manufacturer, Man_Parts.Comment" UpdateCommand="UPDATE [Man_Parts] SET [Man_Parts_Classes_ID] = @Man_Parts_Classes_ID, [Name_And_Manufacturer] = @Name_And_Manufacturer, [Comment] = @Comment WHERE [ID] = @ID"> <DeleteParameters> <asp:Parameter Name="ID" Type="Object" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="Man_Parts_Classes_ID" /> <asp:Parameter Name="Name_And_Manufacturer" Type="String" /> <asp:Parameter Name="Comment" Type="String" /> <asp:Parameter Name="ID" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="ID" /> <asp:Parameter Name="Man_Parts_Classes_ID" /> <asp:Parameter Name="Name_And_Manufacturer" Type="String" /> <asp:Parameter Name="Comment" Type="String" /> </InsertParameters> </asp:SqlDataSource> <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="ID" DataSourceID="SqlDataSource3" ForeColor="#333333" GridLines="None"> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <Columns> <asp:CommandField ButtonType="Button" ShowDeleteButton="True" ShowEditButton="True" CancelText="" DeleteText="" EditText="" UpdateText="" /> <asp:TemplateField HeaderText="" SortExpression="Name"> <EditItemTemplate> <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:ManCS %>" DeleteCommand="DELETE FROM [Man_Parts_Classes] WHERE [ID] = @ID" InsertCommand="INSERT INTO [Man_Parts_Classes] ([Name]) VALUES (@Name)" SelectCommand="SELECT [ID], [Name] FROM [Man_Parts_Classes] ORDER BY [Name]" UpdateCommand="UPDATE [Man_Parts_Classes] SET [Name] = @Name WHERE [ID] = @ID"> <DeleteParameters> <asp:Parameter Name="ID" Type="Object" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="Name" Type="String" /> <asp:Parameter Name="ID" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="Name" Type="String" /> </InsertParameters> </asp:SqlDataSource> <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource4" DataTextField="Name" DataValueField="ID" SelectedValue='<%# Bind("Man_Parts_Classes_ID") %>'> </asp:DropDownList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("Name") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="" SortExpression="Name_And_Manufacturer"> <EditItemTemplate> <asp:TextBox ID="TextBox2" runat="server" Rows="3" Text='<%# Bind("Name_And_Manufacturer") %>' TextMode="MultiLine"></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label3" runat="server" Text='<%# Bind("Name_And_Manufacturer") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="" SortExpression="Comment"> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Rows="5" Text='<%# Bind("Comment") %>' TextMode="MultiLine"></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Bind("Comment") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <RowStyle BackColor="#EFF3FB" /> <EditRowStyle BackColor="#2461BF" /> <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" /> </asp:GridView> </asp:Content>Hope it helps and you can help me[:D]kipo
All-Star
16475 Points
2811 Posts
Re: Gridview refresh after detailsview insert, again...
May 22, 2007 01:09 PM|LINK
Tek sam sad skuzio da smo "svoji"! Znaci, zelis pomocu DetailsView1 ubaciti podatke u bazu i nakon toga osvjeziti GridView1? Ako je tako, u DeatilsView1 dodaj ovaj dio: OnItemInserted="DetailsView1_ItemInserted" a na sam pocetak stranice (odmah iza <%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="nevermind" %>) ubaci ovaj kod:
<script runat="server">
Protected Sub DetailsView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs)
GridView1.DataBind()
End Sub
</script>
dotnetmatch
Member
31 Points
24 Posts
Re: Gridview refresh after detailsview insert, again...
May 22, 2007 02:04 PM|LINK
Solution for those who do not understand Croatian language:
The answer says:
Insert into DetailsView this code: OnItemInserted="DetailsView1, in my code it means I should insert it at the end of the line 23:
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" OnItemInserted="DetailsView1_ItemInserted"
Then, add this code in the beginning of the page, in the row after the title of the page, again, in my case, I (copy/) pasted it in line 2:
<script runat="server">
Protected Sub DetailsView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs)
GridView1.DataBind()
End Sub
</script>
And, that's it! It works great [cool], thank you for posting so simple (dummies-friendly) answer!
Stevishere
Member
381 Points
281 Posts
Re: Gridview refresh after detailsview insert, again...
May 22, 2007 02:28 PM|LINK
You guys are priceless! I have banged my head around for days. While there does seem to be incredible value in VS 2005 PE, it does not quite seem ready for "prime time". This is just one of many "unexplained" incosistencies I have encountered. I hope I can help you all someday as much as you've assisted me.
Click "Mark as Answer" on the post that helped you to help future readers.