|
You are right. I had a feeling that OP is absolute beginner and it would be tough for him if I suggest handling the DataList event and doing all the processing. I felt redirecting to another page would be trivial and easy for him to understand. This is the reason for that suggestion.
|
|
|
|
|
Actually I am far from a beginner. I tried the data list handling as follows but it only gets the first row everytime, and starts over. it never goes to the next record. I know the problem but don't know the solution.
What kind of template should I be using? Data List is a template.
Thanks again.
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
foreach (DataListItem dlItem in DataList1.Items)
{
LinkButton lb = (LinkButton)dlItem.FindControl("deleteBtn");
using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
sqlConnection.Open();
SqlCommand cmdRFullName = new SqlCommand("SELECT username FROM mediaComments ", sqlConnection);
SqlDataReader dr = cmdRFullName.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
if (Session["user_name"] != dr["username"])
lb.Visible = false;
Response.Write("dr" + dr[0] + "<br />");
}
}
}
}
<asp:DataList DataKeyField="commentId" OnDeleteCommand="DataList1_DeleteCommand" ID="DataList1" RepeatLayout="table" runat="server" DataSourceID="ChalkDL">
<ItemTemplate>
<table width="500" cellspacing="0" cellpadding="5" border="0">
<tr>
<td><asp:LinkButton ID="lnkUser" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "username") %>'></asp:LinkButton></td>
</tr>
<tr>
<td colspan="1" width="240px" style="width: 240px; color: Black;" align="left" ><%# DataBinder.Eval(Container.DataItem, "commentText") %></td>
<td style="padding-top: 10px; color: Black;" align="right"><%# String.Format("{0:hh}:{0:mm}{0:tt} {0:MM}.{0:dd}.{0:yy}", DataBinder.Eval(Container.DataItem, "datePosted"))%></td>
</tr>
<tr>
<td style="padding-top: 10px;"><asp:LinkButton OnCommand="LinkButtonCommand" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "username") %>' OnClientClick="return confirm('Are you sure you want to delete your post?');" Visible='<%# visible %>' runat="server" CommandName="delete" ID="deleteBtn" Text="Delete"></asp:LinkButton></td>
</tr>
<tr>
<td colspan="2"><hr /></td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
|
|
|
|
|
Albert83 wrote: Actually I am far from a beginner.
Not from your questions and responses
Albert83 wrote: What kind of template should I be using?
See what I mean
Albert83 wrote: ("SELECT username FROM mediaComments ",
in-line sql, another novice mistake
Albert83 wrote: I know the problem
So do I, it's over your head.
Try looking here[^] and reading about the events, like DeleteCommand and ItemDataBound
only two letters away from being an asset
|
|
|
|
|
Ok. I am not an expert but have a lot of experience.
What would be a better solution to that ?
"SELECT username FROM mediaComments ",
in-line sql, another novice mistake
I looked at ItemDataBound before (Occurs when any button is clicked in the DataList control. )
The point is not to even show the delete button for the user who is not the poster of the comment.
As to templates, Repeater, and Data List can be templated. If not please explain what you mean.
Thanks.
|
|
|
|
|
A better solution to in-line SQL? Ever heard of stored procedures?
Albert83 wrote: I looked at ItemDataBound before (Occurs when any button is clicked in the DataList control. )
Really? Then look again "Occurs when an item is data bound to the DataList control."[^]
You are using template, but using the methods incorrectly.
Albert83 wrote
"Response.Write("dr" + dr[0] + "<br />");" ;
You don't need this. Use the template to show your items, that's what it there for.
You should have enough information now, I suggest you read a little more and look at some of the many examples available. If you need any more, I'll have to start charging you. Where should I send the invoice?
only two letters away from being an asset
|
|
|
|
|
Sure I heard of stored procedures, I use them when I find necessary.
"Response.Write("dr" + dr[0] + " ");" is for testing purposes. A lot of programmers do it when testing the results of the query.
All the items are templated actually.
You are right i mixed it with itemCreated.
Thanks for the help.
|
|
|
|
|
Albert83 wrote: A lot of programmers do it when testing the results of the query.
A lot of novice programmers. Professionals use a debugger.
only two letters away from being an asset
|
|
|
|
|
has nothing to do with level. It's a matter of preference.
|
|
|
|
|
Mark Nischalke wrote: A better solution to in-line SQL? Ever heard of stored procedures?
It's a myth. IMO, nothing wrong with inline SQL other than the difficulty of recompiling code when the DB structure changes. This can be avoided by abstracting the table structure using views. So still you can write inline SQLs safely. Please do correct me if you felt I am wrong.
|
|
|
|
|
N a v a n e e t h wrote: Please do correct me if you felt I am wrong.
Where do I start? This argument has been raised several times.
Inline doesn't allow for separation of the business logic from the presentations, which a good design does, and increases maintenance and development. 10 apps with the same SQL statement must each be changed, rather changing one stored proc. Worse yet, if the schema changes, say a table or column is renamed, all statements must be changed instead of changing one stored proc. Inline statements also don't allow the RDBMS to optimize the execution or otherwise cache it for better performance. Just few of the many reasons.
Then again, if you don't care about robust, well designed and performant applications, keep using inline statements.
only two letters away from being an asset
|
|
|
|
|
That is true. But if you use a statement only once it's ok to use inline statement.
|
|
|
|
|
And if that one statement is executed 1000 times, what does that do for the performance of your system?
only two letters away from being an asset
|
|
|
|
|
I actually meant execution because that's what matters. Used means executed.
Any time the statement executed more than in one place it's easier to work with stored procedure, and modify it.
|
|
|
|
|
and I have a serious problem in my website...
I'm handling a login project, where let the user to login in pageA before entering pageB or pageC. When running at localhost, everything was fine.
Now the problem is when i put into the webserver. The session timeout within 30sec or less eventhough i had code :-
set Session(Login) = user in pageA
-
Session.Timeout = 60 (in pageB & pageC during
pageload!)
If Session(Login) = Nothing Then
respone.redirect(PageA) Else ...............
Although I set the session timeout in web.config as well,
it didn't work
in web.config:
I set the session state to be inProc (didn't work)
also i did:
<sessionState
mode="StateServer"
stateConnectionString="tcpip=65.182.97.156:42424"
cookieless="false"
timeout="20" />
and it didn't work...
many Thanks!
Nour Abdel-Salam...
A Trainer and a Web Developer in Jedda Int'l Computer Center(JICC)
|
|
|
|
|
Try it
<authentication mode="Forms">
<forms slidingExpiration="true" timeout="60"
loginUrl="~/LogIn.aspx"
defaultUrl="~/Default.aspx"/>
</authentication>
Prabhakar.
|
|
|
|
|
Hi
I have a desktop application written using VC++.NET. Majority of the code in it is written for manipulating a MySQL database.
I am planning to migrate the desktop application to a Web application. So will I be able to use the existing VC++.NET code for it?
If not, how can I convert it to C#? Is there any good free tools for conversion?
rgds
Anvesh
|
|
|
|
|
anveshvm wrote: So will I be able to use the existing VC++.NET code for it?
You can use it. Just create managed wrappers for your VC++ classes and use the wrapper classes with your web applications. If you are writting your wrapper in C#, you need to use P-Invoke for accessing C++ classes. If you use C++/CLI, you can use it directly by including necessary files into your managed class.
|
|
|
|
|
"If you use C++/CLI, you can use it directly by including necessary files into your managed class."
If I wrap with C++/CLI can I call the functions from asp.net ??
|
|
|
|
|
anveshvm wrote: If I wrap with C++/CLI can I call the functions from asp.net ??
Yes. But you will have problems if the VC++ classes are handling with MFC forms or other things which web application won't support.
|
|
|
|
|
Recurments :
Perform multiple chat in multiple windows.
plz help me.
|
|
|
|
|
Since this is only your second post to CP, I'd suggest to read the forum guidelines and this[^]. Now go and rephrase your question.
|
|
|
|
|
Hey Navaneeth, Congrats for became a Fixture !!! Good Job !!!
cheers,
Abhijit
|
|
|
|
|
I din't get what you meant. What happened?
|
|
|
|
|
I just want to say you congratulation for becoming a Fixture in CodeProject.
cheers,
Abhijit
|
|
|
|
|
N a v a n e e t h wrote: I din't get what you meant. What happened?
He means that if you look at your profile[^] then you'll see you've been graded a "Fixture" becuase of the number of posts you've made.
|
|
|
|