how to pass variable in the url from gridview in vb.net - vb.net

I have Gridview of the form results. I am trying to add an url to one of the field. How do I pass the variable in the url. intLib is the variable. This is what I have:
VB.Net Code:
<a href="EditIncident.aspx?ID=<%# Eval("Inci_ID")%>&Val2="& intLib>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Inci_ID") %>'></asp:Label>
</a>

I created a session variable and passed it on to the next page.
Thanks for your help.

Related

Find Radiobutton Control from ID String in vb.net

I have 3 radiobuttons in my aspx:
<asp:RadioButton ID="rdoMasculin"
runat="server" AutoPostBack="true"
Checked="true" GroupName="gender"
TextAlign="Right" />
<asp:RadioButton ID="rdoFeminin"
runat="server" AutoPostBack="true"
GroupName="gender" />
<asp:RadioButton ID="rdoAnonymous"
runat="server" AutoPostBack="true"
GroupName="gender" />
When sending the form I'm storing the ID of the checked radiobutton in a Session variable:
for example: Session("currentGender") = rdoZukuTermine.ID
When I'm getting back on the page in a later stage I'm using the following code in codebehind:
Dim currentRadio = CType(FindControl(Session("currentGender")), RadioButton)
currentRadio.Checked = True
Session.Remove("currentGender")
currentRadio ends up as a null reference. But when I'm checking the Session it contains the right ID as a string.
Can someone help me?
Is the RadioButton control directly in your .aspx or does it have any parent controls? if yes call Findcontrol() on it direct parent like this:
Dim currentRadio = CType(ParentControl.FindControl(Session("currentGender")), RadioButton)

HTML MAILTO hyperlink doesn't respond

My hyperlink doesn't open up an email with my database text value.
I have a previous application that uses this exact format and works; however, for this application it doesn't.
One of the many examples I have referenced is: ASP.NET mailto: misfunction
my Database column name is email_Own and so I have tried to DataItem.email_Own and DataItem.email like other examples show to see if whether the value after DataItem is the database column name or not. Both don't work.
Working EX
My other application showed an email within a gridview so I am wondering if that is the reason why the coding below worked:
<asp:TemplateField HeaderText="Description" >
<ItemTemplate >
<br /><br />
Email:
<asp:HyperLink id="lnkEmail" cssClass="emailColor" runat="server" text='<%#DataBinder.Eval(Container, "DataItem.email") %>' NavigateUrl='<%#DataBinder.Eval(Container, "DataItem.email","MAILTO:{0}")%>'>
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
Coding that doesn't work:
Any suggestions for the coding below? This hyperlink is inside a table.
<tr>
<td width="25%">
<font class="Blackfont" size="2" > <b>Owner Email </b> </font>
</td>
<td>
<asp:HyperLink id="Owner_E" runat="server" text='<%#DataBinder.Eval(Container, "DataItem.email") %>' NavigateUrl='<%#DataBinder.Eval(Container, "DataItem.email","MAILTO:{0}")%>'Font-Size="10pt"></asp:HyperLink>
</td>
</tr>
The text of the hyperlink shows up correctly when the page loads. Its the linking to mail that isn't working.
I also tried this code snippet instead but the hyperlink doesn't respond as well: NavigateUrl='<%#Bind("email_Own", "mailto:{0}") %>' Text='<%#Bind("email_Own") %>'
FYI:
I am not sure if this changes anything but I fill the hyperlink in VB.net like so:
If Not DsAds.Tables(0).Rows(0).Item(14) Is DBNull.Value Then
lnkEmail.Text = DsAds.Tables(0).Rows(0).Item(14)
End If
where DsAds is a dataset
The HTML source code shows this:
I referenced http://forums.asp.net/t/1071308.aspx?mailto+link+in+textbox
Like so:
<asp:HyperLink id="lnkEmail" runat="server" Font-Size="10pt" ></asp:HyperLink>
and in Page Load[at end of it] I add:
lnkEmail.NavigateUrl = "mailto:" + DsAds.Tables(0).Rows(0).Item(14)
lnkEmail.Text = DsAds.Tables(0).Rows(0).Item(14)

Gridview Calculated Field in Row

I am using Visual Studio 2010 and Visual Basic linked to a SQL database. I have a Gridview in which I want to have a calculated field, let's call it NoHoursOff, based on the fields in that row - BeginTimeOff and EndTimeOff.
After doing some research, I learned that I should use a TemplateField. I just don't understand how this works. I have tried with no success:
<asp:TemplateField HeaderText="Total Hours" >
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# "EndTimeOff" - "BeginTimeOff" %>' Width="100px"></asp:Label>>
</ItemTemplate>
</asp:TemplateField>
I also have tried replacing Text value with "EndTimeOff".subtract("BeginTimeOff") which works on another webpage. I don't understand how to do a calculated field! Please help or can you direct me to a tutorial that would explain this to me.
You need to create a function in the codebehind like this
public string getValue(object BeginTimeOff, object EndTimeOff)
{
return (Convert.ToDateTime(EndTimeOff.ToString()) - Convert.ToDateTime(BeginTimeOff.ToString())).ToString();
}
and in the Label this
Text=<%# getValue(Eval("BeginTimeOff"), Eval("EndTimeOff")) %>
then just set the format you want to display in the method (n days, hh.mm.ss, etc) to fit your requirement
Per your suggestions, I can't get it to work. Here is my aspx and vb code:
<asp:TemplateField HeaderText="TotalHours2" >
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# getValue(Eval("BeginTimeOff"), Eval("EndTimeOff")) %>' Width="100px"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
AND
Public Function getValue(BeginTimeOff As Object, EndTimeOff As Object) As String
Return (DateTime.Parse(EndTimeOff.ToString()) - DateTime.Parse(BeginTimeOff.ToString())).ToString()
End Function
It's probably something wrong with my attempt to convert C# to VB. Thanks for all your help! (FYI - I did get another function to work using your example - just not this new function. If you want to see code, I'll show it to you. It counts days between 2 dates, not including weekends and holidays. Thanks a million for helping me figure that one out!)

How to set DataNavigateUrlFormatString dynamically ? or How to eval Page.User.Identity.Name on a webpage?

I am building a GridView which can download songs. So I use a hyperlink fileld and use DateNavigateUrlFormatString.
E.G.
DataNavigateUrlFormatString="~/uploads/{0}"
Now,
I need to combine Page.User.Identity.Name into DateNavigateUrlFormatString
For example,
DataNavigateUrlFormatString="~/uploads/UserName/{0}" which Page.User.Identity.Name depending on the user login.
I tried to access DataNavigateUrlFormatString from the code behind but I couldn't.
I tried to use Eval such as
'~/uploads/" <%# Eval("Page.User.Identity.Name") %> /{0}'
this doesn't work as well.
Hope someone could point me out.
Thanks,
L
FInal Solution
<asp:TemplateField HeaderText="Play">
<ItemTemplate>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl = '<%# String.Format("~/UserUploads/{0}/",Page.User.Identity.Name)+ "/" + Eval("Song_Name") %>' Text="Play" >
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
DataNavigateUrlFormatString expects the placeholder(s) to come from fields in the datasource of the control.
My suggestion is that since you already know the url you are trying to build you could set the NavigateUrl property of hyperlink control.
NavigateUrl = '<%# String.Format("~/UserUploads/{0}/",Page.User.Identity.Name)+ "/" + Eval("Song_Name") %>'

Making asp:Label a specific HTML tag

New to VB.net, just trying to figure out how to properly manipulate the asp:Label control.
I have a page that, based on if there are results, etc should display an <h1></h1> tag with a header, then the data. As I am using the code-behind model, my user facing page essentially just has the following:
<asp:Label ID="lblMessage" runat="server"
Visible="false" />
<asp:DataList ID="dlCurriculumLists" runat="server"
DataSourceID="sdsCurriculumLists"
DataKeyField="Entry No_"
RepeatLayout="Flow"
Visible="false">
<ItemTemplate>
<div>
<asp:HyperLink ID="hlCurriculum" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>'
NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "File Path") %>'
ToolTip='<%# DataBinder.Eval(Container.DataItem, "Title") %>'
Target="_blank"
Style="font-weight: bold;">
</asp:HyperLink>
</div>
</ItemTemplate>
</asp:DataList>
On my code-behind page, I then set the asp:Label and asp:DataList to Visible="true" based on the data from the database. Here's the catch - if there is data, I want to set lblMessage to be an H1, and if not, just standard Label text. I realize I can emulate the look through the CSS, but was just hoping there was another way (maybe similar to the ItemTemplate concept) to specify the HTML type of the Label control - it appears to be a by default.
For people coming from a VB background, it's a common mistake to think that the most basic control for displaying arbitary text is a Label.
That's not true. A label should label something, usually another UI control (that's what the AssociatedControlId property is for).
If you just want to display arbitrary text or HTML markup, use something more basic instead. Some examples are asp:Literal, asp:Placeholder or asp:Localize.
Using, for example, an asp:Literal called myLiteral, you can easily create a heading in code:
myLiteral.Text = "<h1>" & Server.HtmlEncode(myHeading) & "</h1>"
As far as I know, the asp:Label component will always generate a <label> HTML tag when its AssociatedControlId attribute is set.
What you could do instead is use a Literal Control and populate it with the HTML you wish at runtime.
UPDATE
One thing you could do to make this work as required using your current Label control is to have a theme for the label that marks it up as a H1. You could then toggle the controls EnableTheming property as required.
Aside from what already has been suggested here, you can also implement your own ASP.NET control with any properties you want, then modify its rendering on the fly, depending on the properties' values. It is pretty fun to do and is not as hard as one might think. Here is some information on the subject: http://msdn.microsoft.com/en-us/library/vstudio/zt27tfhy(v=vs.100).aspx