I am very new at this area. I have script written in vb.net but I want to convert in C# but it is not working as the vb.net code.so please help.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="2"
ForeColor="#333333" GridLines="None" AllowPaging="True">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkdownload" runat="server" Text="Download" CommandName="Download"
CommandArgument='<%#Eval("FullName") +";" + Eval("Name") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="File Name" />
<asp:BoundField DataField="Length" HeaderText="Size (Bytes)" />
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign开发者_StackOverflow="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
.
Private Sub BindGrid()
Dim DataDirectory As String = "~/Uploads"
Dim files() As FileInfo = New DirectoryInfo(Server.MapPath(DataDirectory)).GetFiles
GridView1.DataSource = files
GridView1.DataBind()
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
BindGrid()
End If
End Sub
Private Sub Downloadfile(ByVal fileName As String, ByVal FullFilePath As String)
Response.AddHeader("Content-Disposition", "attachment; filename=" & fileName)
Response.TransmitFile(FullFilePath)
Response.End()
End Sub
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
If e.CommandName = "Download" Then
Dim fileInfo() As String = e.CommandArgument.ToString().Split(";")
Dim FileName As String = fileInfo(1)
Dim FullPath As String = fileInfo(0)
Downloadfile(FileName, FullPath)
End If
End Sub
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
GridView1.PageIndex = e.NewPageIndex
BindGrid()
End Sub
Here is the code converted to c# using a VB.NET to C# Converter:
private void BindGrid()
{
string DataDirectory = "~/Uploads";
FileInfo[] files = new DirectoryInfo(Server.MapPath(DataDirectory)).GetFiles;
GridView1.DataSource = files;
GridView1.DataBind();
}
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack) {
BindGrid();
}
}
private void Downloadfile(string fileName, string FullFilePath)
{
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.TransmitFile(FullFilePath);
Response.End();
}
protected void GridView1_RowCommand(object sender,
System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
if (e.CommandName == "Download") {
string[] fileInfo = e.CommandArgument.ToString().Split(";");
string FileName = fileInfo[1];
string FullPath = fileInfo[0];
Downloadfile(FileName, FullPath);
}
}
protected void GridView1_PageIndexChanging(object sender,
System.Web.UI.WebControls.GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindGrid();
}
C# doesn't have the "Handles" keyword like VB.Net does, so it looks like your GridView is not properly wired up to the necessary handler. Try adding the following parameter to your GridView tag:
OnRowCommand="GridView1_RowCommand"
Note you'll need to do the same thing for your page index changing event as well.
精彩评论