|
ya sure it can be done like that also. You can go through the records one by one(in a loop) and then execute a insert statement to insert the record in the database.
Best Regards,
Apurva Kaushal
|
|
|
|
|
Hi,
Will it manage the transaction,I mean it may happen that some records are inserted and other didnt.Can we pass datatable to Insert function which is in class file or can we define property for this?What is ur suggestion on this???
Whatever your suggestion please give me the syntax for the same.
Thanks and Regards.
|
|
|
|
|
Hi,
Probably we can maintain the transactiob in the data access layer also. But that i have never used. But for the second option(stored procedure) we can maintain it easily.
Best Regards,
Apurva Kaushal
|
|
|
|
|
Sorry to say I have not used any of the methods as I dont know much about Stored Procedure and the layer which u are saying that also I dont know.
Thanks and Regards.
|
|
|
|
|
I have discused this on another forum also. url for the same discussion is :
http://www.codingforums.com/showthread.php?t=88711
anybody have any idea regarding recordset file (save method of ado) using asp.net ??
|
|
|
|
|
I am using ASP.net 1.1 in Visual Studio 2003. I have a datagrid that changes a rows color based on a column's value. I want the links to change to the same ForeColor as the text in the bound columns. Here is some of my code:
VB CODE
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
SqlDataAdapter1.Fill(DataSet11, "Table")
DataGrid1.DataSource = DataSet11.Tables("Table").DefaultView
DataGrid1.DataBind()
SqlDataAdapter2.Fill(DsBackLogHrs1, "dbo_USER_BackLog_Hours")
txtBackLogHrs.DataBind()
End Sub
Private Sub dgContacts_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
' Make sure that this is a data row and not a header or footer.
If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
' Get the value of the SortOrder Field. This field is an integer that describes the Data row.
' 0 = active Ro
' 5 = Parts Are In (Active RO)
' 10 = Parts Are In (Non Active RO)
' 30 = Comeback
' 50 = Customer Waiting (Non active RO)
' 300 = Stale RO (No one has punched onto this RO for 48 hours)
' 150 = Open RO
' 175 = Parts on BackOrder
Dim isTimeAvail As Single
Dim isTimetoPickup As Single
Dim isTimetoNewPickup As Single
Dim isNewPickup As DateTime
Dim isDescript As String = CType(DataBinder.Eval(e.Item.DataItem, "Descript"), String)
Dim isDateProm As DateTime = CType(DataBinder.Eval(e.Item.DataItem, "DateProm"), DateTime)
Dim isSortOrder As Single = CType(DataBinder.Eval(e.Item.DataItem, "SortOrder"), Single)
Dim isFlatHrs As Single = CType(DataBinder.Eval(e.Item.DataItem, "FlatHrs"), Single)
Dim isTechHrs As Single = CType(DataBinder.Eval(e.Item.DataItem, "TechHrs"), Single)
Select Case isSortOrder
Case 5
e.Item.ForeColor = System.Drawing.Color.Green
e.Item.Font.Bold = System.Drawing.FontStyle.Bold
Case 10
e.Item.BackColor = System.Drawing.Color.Green
e.Item.ForeColor = System.Drawing.Color.White
Case 30
e.Item.ForeColor = System.Drawing.Color.DarkRed
e.Item.Font.Bold = System.Drawing.FontStyle.Bold
Case 50
e.Item.ForeColor = System.Drawing.Color.Navy
e.Item.Font.Bold = System.Drawing.FontStyle.Bold
Case 175
e.Item.BackColor = System.Drawing.Color.Gray
Case 300
e.Item.BackColor = System.Drawing.Color.Tan
e.Item.ForeColor = System.Drawing.Color.Black
End Select
ASP Code:
<title>WebForm1
.inGreen {COLOR: green; TEXT-DECORATION: none}
.inDarkRed {COLOR: DarkRed; TEXT-DECORATION: none}
.inNavy {COLOR: Navy; TEXT-DECORATION: none}
.inBlack {Color: Black; Text-decoration: None}
.inOrange {Color: OrangeRed; Text-decoration: None}
.inWhite {Color: White; Text-decoration: None}
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 80px" runat="server" height="383px" width="990px" datasource="<%# DataSet11 %>" autogeneratecolumns="False" datamember="Table" bordercolor="Fuchsia">
<itemstyle font-names="Verdana">
<columns>
<asp:hyperlinkcolumn datatextfield="SalesId" datanavigateurlfield="SalesId" datanavigateurlformatstring="javascript:varwin=window.open('WebForm2.aspx?SalesId={0}',null,'width=950,height=625, resizable=yes, Scrollbars=yes');void('');"
="" headertext="Repair Order #">
<headerstyle font-names="Verdana" font-bold="True">
<asp:hyperlinkcolumn datatextfield="CustName" datanavigateurlfield="SalesId" datanavigateurlformatstring="javascript:varwin=window.open('CustomerInfo.aspx?SalesId={0}',null,'width=892,height=350, resizable=yes, Scrollbars=yes');void('');"
="" headertext="Customer Name">
<headerstyle font-names="Verdana" font-bold="True">
<itemstyle font-names="Verdana">
<asp:boundcolumn datafield="DateCreated" headertext="Date Create" dataformatstring="{0 }">
<headerstyle font-names="Verdana" font-bold="True">
<asp:boundcolumn datafield="DateProm" headertext="Date/Time Promised">
<headerstyle font-names="Verdana" font-bold="True">
<itemstyle font-size="Smaller" font-names="Verdana">
<asp:boundcolumn visible="False" datafield="SortOrder" headertext="SortOrder">
<asp:boundcolumn datafield="Descript" headertext="Description">
<headerstyle font-names="Verdana" font-bold="True">
<asp:boundcolumn datafield="FlatHrs" sortexpression="FlatHrs" headertext="FlatHrs">
<asp:hyperlinkcolumn datatextfield="TechHrs" datanavigateurlfield="SalesId" datanavigateurlformatstring="javascript:varwin=window.open('TechPunches.aspx?SalesId={0}',null,'width=950,height=625, resizable=yes, Scrollbars=yes');void('');"
="" headertext="TechHrs" datatextformatstring="{0:N2}">
<cc1:webtimer id="WebTimer1" runat="server" <="" small="">
Thanks for all the help
NewbieDave
|
|
|
|
|
I guess you create css classes for the hyperlink column, the sample can be found from here[^]:
|
|
|
|
|
I recently discovered so much can be done by using xml and xslt transformation. But i wanted which would be more efficient desiging pages using xml and xml transformation or using datagrid and other control while displaying data
leo
Kathmandu, Nepal
|
|
|
|
|
Depends on your requirements.
If you want someone, who has no idea about datogrid to be able to transform your HTMl, use xsl.
Datagrid is more powerful, much easier to do sorting and paging for example.
Sincerely,
Elina
Life is great!!!
Enjoy every moment of it!
|
|
|
|
|
I also posted this message at the C# forum as I am programming in that so if this post looks familiar....
I have a project where the user enters a part number. Based on that part number a datagrid will return associated info. The main row will return 1-to-1 items such as part description, drawing location, etc. I plan to use nested datagrids as there will be multiple subparts per part, multiple costs per part etc.
Anyhow, all total I have about 11 tables I need to use. The problem I am facing is that not all parts have a drawing location. When this is blank, the entire row turns up blank.
How do I fix it so that the grid returns any data that is present, and ignores null information?
Here is the C# code:
using System;<br />
using System.Collections;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Web;<br />
using System.Web.SessionState;<br />
using System.Web.UI;<br />
using System.Web.UI.WebControls;<br />
using System.Web.UI.HtmlControls;<br />
using System.Data.SqlClient;<br />
using System.Configuration;<br />
<br />
namespace WebBasedPartsDB<br />
{<br />
public class WebForm2 : System.Web.UI.Page<br />
{<br />
protected System.Web.UI.WebControls.TextBox txtSearchPart2;<br />
protected System.Web.UI.WebControls.DataGrid DataGrid2;<br />
protected System.Web.UI.WebControls.Button btnSearch2;<br />
protected string strPartNumberInput2;<br />
<br />
public String strConnectSQL = (ConfigurationSettings.AppSettings["ConnectionString"]);<br />
<br />
private void Page_Load(object sender, System.EventArgs e)<br />
{<br />
}<br />
<br />
#region Web Form Designer generated code<br />
override protected void OnInit(EventArgs e)<br />
{<br />
InitializeComponent();<br />
base.OnInit(e);<br />
}<br />
<br />
private void InitializeComponent()<br />
{ <br />
this.btnSearch2.Click += new System.EventHandler(this.btnSearch2_Click);<br />
this.DataGrid2.SelectedIndexChanged += new System.EventHandler(this.DataGrid2_SelectedIndexChanged);<br />
this.Load += new System.EventHandler(this.Page_Load);<br />
<br />
}<br />
#endregion<br />
<br />
private void btnSearch2_Click(object sender, System.EventArgs e)<br />
{<br />
strPartNumberInput2 = txtSearchPart2.Text;<br />
string SQLString = "SELECT c.cost, c.costtypeid, ct.description, pt.description as ptDescription FROM costs c INNER JOIN Parts p ON c.PartID = p.Id INNER JOIN PartTypes pt on pt.ID = p.PartTypeID INNER JOIN CostTypes ct on ct.ID = c.costtypeid WHERE p.PartNumber = @PartID";<br />
SqlCommand cmd = new SqlCommand();<br />
cmd.Connection = new SqlConnection(strConnectSQL);<br />
cmd.CommandText = SQLString;<br />
cmd.Parameters.Add ("@PartID", strPartNumberInput2);<br />
BindGrid(cmd, DataGrid2);<br />
}<br />
<br />
<br />
private void BindGrid (SqlCommand command, System.Web.UI.WebControls.DataGrid DGrid)<br />
{<br />
SqlDataAdapter adapter = new SqlDataAdapter(command);<br />
DataSet ds = new DataSet();<br />
adapter.Fill(ds);<br />
DGrid.DataSource = ds;<br />
DGrid.DataBind();<br />
<br />
}<br />
<br />
private void DataGrid2_SelectedIndexChanged(object sender, System.EventArgs e)<br />
{<br />
<br />
}<br />
<br />
}<br />
}
|
|
|
|
|
Change INNER JOIN DraftingData
to Left Join DraftingData
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
D'oh! This is what happens when you don't program for a couple years!!! I have forgotten all the simple things!
|
|
|
|
|
Hi
I'm creating checkbox list dynamically and populate it with database values.As I want this list to be shown on first time i created it in if-else block of "Not page.ispostback". Now I want to get the values of checkboxes which user selected on post back. but when i try to get the values on post back, it gives me an error like "checkbox list doesnot exist" or "Object reference not set".Please help me . Following is my code:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
if Not page.ispostback
Dim Reader As SqlDataReader
Dim uamenity_Chklist As CheckBoxList = New CheckBoxList
sqlStatement = "SELECT unitamenity_id,unitAmenity_name FROM UNITAMENITY_MASTER"
cmd.CommandText = sqlStatement
cmd.Connection = conn
Reader = cmd.ExecuteReader()
uamenity_Chklist.ID = "chkUamenity"
uamenity_Chklist.DataSource = Reader
uamenity_Chklist.RepeatColumns = 2
uamenity_Chklist.DataValueField = "unitamenity_id"
uamenity_Chklist.DataTextField = "unitAmenity_name"
uamenity_Chklist.DataBind()
Reader.Close()
Dim CBrow As New HtmlTableRow
UAmenity.Rows.Add(CBrow)
Dim CBCell As New HtmlTableCell
CBrow.Cells.Add(CBCell)
CBCell.Controls.Add(uamenity_Chklist)
end if
end sub
|
|
|
|
|
You can try setting the enable viewstate to true; but I think the checkBox list will be gone by the time you get to the onclick event. Because the HTMLTable will be loaded into memory without the checkboxlist. Check the page init event to see if you can access the values of the checkbox then.
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
The thing is that the postback resets the page to it's original state, so any information regarding the dynamically created controls is lost. Why is that? Because the Page class is stateless. The Page recreates child controls based on the tags in the aspx files, so your controls not being present there are not shown. What you need to do is recreate the controls in the OnInit event or any event that fires before PageLoad , or in PageLoad if you do a check to see is the page is posted back. See this article[^] as an example.
regards,
Mircea
Many people spend their life going to sleep when they’re not sleepy and waking up while they still are.
|
|
|
|
|
Nice post, great article. I was trying to explain that but couldn't.
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
Thanks. That's why we're here
regards,
Mircea
Many people spend their life going to sleep when they’re not sleepy and waking up while they still are.
|
|
|
|
|
Hi, I've created a standard GridView with an sqlDataSource, I've enabled update and delete and created the updateQuery and the DeleteQuery in the sqldatasource.
I tried it and it worked.
Then I tried to add a filter modifing the Sqldatasource proprieties in the Design:
FilterExpression = {0}
FilterParameters = {newpar,Request.Form("hdd_where")}
//hdd_where is an html hidden input
The select worked and showed me only the correct rows,but when I tried to delete or update a row nothing happened,and no error message was thrown.
I've observed that if you set the propriety ConflictDetection to CompareAllValues an error message is thrown:
"You have specified that your update command compares all values on SqlDataSource 'MySqlDataSource', but the dictionary passed in for oldValues is empty. Pass in a valid dictionary for update or change your mode to OverwriteChanges"
Now if the oldValues dictionary is empty every sql command that uses @original_KeyName parameter doesn't work.
ex:
"DELETE FROM [t_plro] WHERE [plro_ID] = @original_plro_ID" If @original_plro_ID doesn't exist no rows are deleted
the same goes for the update.
What I would like to know is : Why the oldValues Dictionary is empty if you specify a filterParameter? Is there a way to solve this situation?
Thank you for your help
Francy
p.s. I've also tried to modify on the fly the
sqlDataSource.SelectQuery but on the postback the sqldatasource execute the delete/update on the wrong row,because it uses the SelectQuery saved in the aspx file
|
|
|
|
|
I suggesting using stored procs for your select and update, that will make it easier. For the select query, here is a trick for you.
In the where clause write [plro_ID] = isnull(@original_plro_ID, [plro_ID]) and set the default of the paramter = null in the create proc statement. Then if you have a filter add the parameter if not don't.
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
Thank's for your answer.
I don't understand how the trick should work.
I modified the select query in this way:
"SELECT * FROM [t_plro_PriceListRoundings] WHERE [plro_ListName]=isnull(@ListName, [plro_ListName])"
ListName = Request.Form("hdd_Where")
ConvertEmptyStringToNull = True;
DefaultValue = null (I've tried leaving this propriety blank)
Direction = input
FormField = hdd_Where
Name = ListName
Size = 0
Type = String
When I load the page the gridview isn't there .If I open the page in html mode , the Gridview doesn't exist.
Could you tell me what I did wrong?
Thank you
Francy
|
|
|
|
|
Could you post your code snippets ? I believe that you can use the FilterExpression with the SqlDataSource control and the update command can execute properly.
|
|
|
|
|
Sorry but what code snipplets are you talking about?
I didn't write any code, I only modified the sqlDataSource proprieties:
Select query: "SELECT * FROM [t_plro_PriceListRoundings]"
Delete query: "DELETE FROM [t_plro_PriceListRoundings] WHERE [plro_ID] = @original_plro_ID"
Update query: "UPDATE [t_plro_PriceListRoundings] SET [plro_PriceMinValue] = @plro_PriceMinValue, [plro_PriceMaxValue] = @plro_PriceMaxValue, [plro_RoundingValue] = @plro_RoundingValue, [plro_ListName] = @plro_ListName, [plro_FixedAmmount] = @plro_FixedAmmount WHERE [plro_ID] = @original_plro_ID"
Filter expression: "{0}"
Filter parameters: "{newpar,Request.Form("hdd_where")}"
where hdd_where.value (hidden html input) can be "WHERE plro_ListName=\"Test\"" or something like it
I also specify on the GridView the propriety DataKeysNames = "plro_ID"
That's All
Thank's for you help
Francy
|
|
|
|
|
I would like to see the markup (definition) of the SqlDataSource control in the web page if you don't mind.
|
|
|
|
|
I hope this is what you asked:
<asp:SqlDataSource ID="MySqlDataSource" runat="server" ConflictDetection="CompareAllValues"
DeleteCommand="DELETE FROM [t_plro_PriceListRoundings] WHERE [plro_ID] = @original_plro_ID"
InsertCommand="INSERT INTO [t_plro_PriceListRoundings] ([plro_PriceMinValue], [plro_PriceMaxValue], [plro_RoundingValue], [plro_ListName], [plro_FixedAmmount]) VALUES (@plro_PriceMinValue,@plro_PriceMaxValue, @plro_RoundingValue, @plro_ListName, @plro_FixedAmmount)"
OldValuesParameterFormatString="original_{0}" ProviderName="System.Data.SqlClient"
SelectCommand="SELECT * FROM [t_plro_PriceListRoundings]"
UpdateCommand="UPDATE [t_plro_PriceListRoundings] SET [plro_PriceMinValue] = @plro_PriceMinValue, [plro_PriceMaxValue] = @plro_PriceMaxValue, [plro_RoundingValue] = @plro_RoundingValue, [plro_ListName] = @plro_ListName, [plro_FixedAmmount] = @plro_FixedAmmount WHERE [plro_ID] = @original_plro_ID"
EnableCaching="True"
OnSelecting="MySqlDataSource_Selecting"
OnUpdating="MySqlDataSource_Updating" FilterExpression="{0}">
<DeleteParameters>
<asp:Parameter Name="original_plro_ID" Type="Int32" DefaultValue="" />
<asp:Parameter Name="original_plro_PriceMinValue" Type="Decimal" />
<asp:Parameter Name="original_plro_PriceMaxValue" Type="Decimal" />
<asp:Parameter Name="original_plro_RoundingValue" Type="Decimal" />
<asp:Parameter Name="original_plro_ListName" Type="String" />
<asp:Parameter Name="original_plro_FixedAmmount" Type="Decimal" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="plro_PriceMinValue" Type="Decimal" />
<asp:Parameter Name="plro_PriceMaxValue" Type="Decimal" />
<asp:Parameter Name="plro_RoundingValue" Type="Decimal" />
<asp:Parameter Name="plro_ListName" Type="String" />
<asp:Parameter Name="plro_FixedAmmount" Type="Decimal" />
<asp:Parameter Name="original_plro_ID" Type="Int32" />
<asp:Parameter Name="original_plro_PriceMinValue" Type="Decimal" />
<asp:Parameter Name="original_plro_PriceMaxValue" Type="Decimal" />
<asp:Parameter Name="original_plro_RoundingValue" Type="Decimal" />
<asp:Parameter Name="original_plro_ListName" Type="String" />
<asp:Parameter Name="original_plro_FixedAmmount" Type="Decimal" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="plro_PriceMinValue" Type="Decimal" />
<asp:Parameter Name="plro_PriceMaxValue" Type="Decimal" />
<asp:Parameter Name="plro_RoundingValue" Type="Decimal" />
<asp:Parameter Name="plro_ListName" Type="String" />
<asp:Parameter Name="plro_FixedAmmount" Type="Decimal" />
</InsertParameters>
<FilterParameters>
<asp:FormParameter FormField="hdd_Where" Name="test" />
</FilterParameters>
</asp:SqlDataSource>
I don't use any event , if you see any of them it was just for testing.
ex:
hdd_Where.value = "WHERE plro_ListName = \"Test\""
Thank you
Francy
|
|
|
|
|
That's what I would like to see and it's clear enough except a couple of redundant update/delete parameters. However, one thing that strikes me most is the value of the hidden element:
"<code>WHERE</code> plro_ListName = \"Test\"" .
Are you sure that you have the keyword WHERE in the filter expression?
|
|
|
|